Although not yet mainstream for production role out around Melbourne, virtual environment tool Docker is starting to creep into application deployment amongst ‘the type of production crews that you can spin around yet they still know where they are’ with the Linux container engine which has also been adopted by Ebay, Apple and VMWare.
Docker is an open source project defining a new unit of software delivery that is ‘more lightweight than a VM but can ship more than just an application specific piece’. It has been released by Heroku competitor dotCloud (a PAAS provider) which aims to solve the problems of complex software stacks for environment set ups and deploys, hosts and manages applications for developers that don’t want to spend the time setting up and running environments themselves. What surprised the people at dotCloud is that Docker started as a side show yet quickly generated 160 contributors and 6,000 Github stars in it’s first five months becoming the most successful thing they had ever done.
So what is so special about Docker and why has it been catapulted from bleeding to leading so quickly? Solomon Hykes, the CTO and Founder of dotCloud gives an Introduction to the tool in this presentation at Twitter HQ.
What makes Docker so Attractive?
Whilst running an environment on a virtual machine instead of an in house server solves a lot of problems in relation to security, isolation, ease of installation and so on, what Docker delivers is a much faster way to boot up an environment and saves money by only using the resources you actually use. Within this, it delivers
- A Portable Environment. Allows developers to create a custom runtime environment once and use it on any other machine independently of the host machine.
- Efficiency and Cost. As above, Docker is able to run multiple containers on one VM which means that you don’t need to pay for the cost of setting up a new VM each time you need a new environment. Containers also start quicker than VMs.
- Performance. Cuts down on poor performance issues associated with VMs
- Security. Containers are isolated from the rest of the server which means that if an application is hacked, it will not compromise other assets on that server.
- Standard and Clean. The standardisation of an environment with containers loses inconsistencies with running applications on a different host each time. This means that an application will always run as it was tested without running into the nuances of updated software versions on a server which is not isolated.
- Easy to Add and Remove. If you don’t need a container, you can simply destroy it and there won’t be any trace left on the host.
- Resource Constraint. Similar to a VM which would have an allocation of CPU cycles, Docker limits the CPU and memory available to an application which means that you won’t have to suffer being compromised by other activity.
Jérôme Petazzoni from dotCloud gives an introduction to Docker and containers in this Slideshare.