Container-based virtualisation is probably the hottest tech in cloud computing today, and Docker has taken container-based virtualisation into the mainstream of app development. So what are containers, and what are the pros and cons of Docker and this new technology?

What are containers?

Containers are also known as ‘operating-system-level virtualisation’. Containers provide the bare minimum that is required by an application to function and run as intended. In effect, containers are minimalist virtual machines that do not run on a hypervisor. Items that are usually bundled into a container include:

• Dependencies
• Application
• Binaries
• Libraries
• Configuration files

Through containerisation, an application is able to run reliably across different environments by abstracting away the physical infrastructure and the operating system. Containerised apps share the kernel of the host operating system with other containers, and the shared area of the OS is read-only. Containers usually have just one single executable service.

Docker

Docker is the most popular containerisation platform. Docker is based on open source technologies that were previously available, but was created so that Linux applications can be deployed into containers that can then run in various environments as required. Docker contains a number of open source projects that serve as a basis for the Docker platform.

Docker was founded in 2010 by Solomon Hyke and has since formed partnerships with tech heavyweights including Google and Microsoft.

Advantages of using Docker

Because the average container size is only within tens of MB, a server can host significantly more containers than virtual machines. Docker is less resource intensive, meaning that one server can handle a higher computing workload. Docker allows you to easily allocate resources to processes, meaning that you can run your app across various environments.

Docker can decrease the time spent on testing, development, and deployment of services and applications. In addition, bug tracking and testing becomes less complicated. Container technology is cost-effective, potentially allowing you to reduce your operating and developing costs (fewer servers = fewer staff).

Docker is very fast. As the need to boot up a virtual machine has been removed, Docker allows the user to start apps in a virtual, software-defined environment that is much quicker.

Docker’s feature set changes frequently, removing old ones and adding new ones. All of these changes are well-documented and each different version is clearly noted.

Docker-hub allows users to enjoy turn-key software distribution and installation almost anywhere via a repository.

Disadvantages of using Docker

Perhaps the main disadvantage of using container-based virtualisation technology instead of traditional virtual machines is security. Because containers share the kernel and other components of the host OS, and have root access, they are less isolated from each other than virtual machines. Therefore, any vulnerability in the kernel can easily jeopardise the security of all the satellite containers too.

Containers allow less flexibility in OS. In order to run containers with different operating systems, you would need to start a whole new server, and this could place serious constraints on complex enterprise application use.

Networking can also be a challenge because the deployment of isolated containers while maintaining a sufficient network connection can be difficult.

As yet, there is no straightforward way of connecting containers to storage, and Docker Data Volumes do need a lot of provisioning on the host and manual configuration, which is not efficient or particularly user-friendly.

The only type of monitoring solution that is offered by Docker is the stats command. This is fine if all that is required is very basic information about your containers, but it does not provide for more advanced monitoring.

Docker is the most popular container-based virtualisation tool on the market at the moment. Although there are some cons to using Docker, continual enhancement and development means that the pros outweigh the cons and it appears likely that the technology will only continue to improve.

Contact us today for more information on our Docker Hosting Services.