Docker is a new technology for creating, deploying and managing software containers. We started to use it to host our Social Inclusion services running on the server side. In this article, we shortly introduce Docker and describe why we are using it here in SIT.
In short, Docker is a Linux technology to manage and run software containers. Docker is a tool that can solve these problems for you:
- You have developed a server application and you want to ensure that it runs consistently in both development, test and deployment environments. Build once, run everywhere!
- You want to archive a server application for later use (e.g. if a project is over and you don’t anymore run the server on a daily basis) and make it fast and resource-efficient to bring the server to life in the future. Configure once…run anything!
The different Docker containers function similarly to virtual machines, in the sense that they offer isolated environments for running your server-side application. However, Docker containers are much lighter than virtual machines, since they share many run-time resources with the Docker hosting machine. On the contrast, the containers are not as isolated as virtual machines are from each other, but for many purposes Docker’s level of isolation is enough. We will not dive much into the differences between Docker containers and virtual machines, if you are interested in it, you can start by checking this stack overflow Q&A.
Docker also manages snapshotting of the containers and theirs build process, making it very fast and easy to change and deploy containers. The mechanism to build Docker container images is through simple instruction files called Dockerfiles. Their simplicity together with the repeatability of the Docker containers has triggered the creation of a large Docker community which share different containers repositories in Docker’s registry. As a consequence of that, if you want to deploy a standard service such as a LAMP server, XMPP server, etc; there is probably already a Dockerfile for that, which you just need to customize, build and run. Moreover, many of those Dockerfiles are hosted and maintained in Github, so others can contribute, update and maintain.
Market-wise, Docker does not seem to be a short-lived technology hype. The platform is open source and has more than 500 contributors in github. Big companies such as eBay and Spotify are using Docker and cloud computing platforms such as Amazon AWS, Google Cloud Platform and Openshift are starting to support Docker.
Here in SIT we have a server running Docker and we started using it in the Optet and Farseeing projects for installing, managing and deploying theirs server applications. The usage of Docker means that both apps are sure to run in any machine running Docker. Therefore, we avoid the risk of facing nasty deployment errors due to dependency versioning. Besides that, it is very quick to deploy/start/stop applications; and the Dockerfiles force our applications to have working automated installation scripts (reducing documentation and increasing repeatability).
Thanks to the lightweight of the Docker containers, we can offer Ubicollab students the possibility to use our Docker server to test, integrate and deploy theirs servers application. If you have a student project that you would like to run on Docker, contact us and we may be able to support you.