This project comes from Innovation Week March 2018. Code can be found at https://github.com/csrster/docker-csr
Docker
What is Docker? It is usually described as "a container". You can think of it as being a sandbox in which you can run any kind of application isolated from the rest of your system. Or more precisely, a sandbox where you control the interaction with the rest of the system - e.g. what ports or directories are accessed by the system. But Docker containers are much lighter than virtual machines because they reuse the running kernel of the host system.
The Docker Way
The Docker Way is to us one container per service. So whereas in NetarchiveSuite we typically run several NAS applications, a database server and a JMS broker all on a single admin machine, the Docker Way would be to run these each in their own container.
Docker Use Cases
There are multiple ways to use Docker
- To create a throwaway service - e.g. a database server for a test instance
- To test your own application in a controlled sandbox
- To enable coordination between multiple applications and services, possibly mimicking a distributed application
- To create a controlled environment for deploying to a production system.
In this project I have looked at all but the last of these.
Services for NetarchiveSuite
NetarchiveSuite requires
- A postgres database server
- A JMS broker
- An ftp server
With Docker these can be fired up extremely quickly. The broker could be started directly from the command line