Just as you were getting used to virtual machines, the next big thing is here. Containerization of applications is the next logical step in containerizing web applications and operating systems for massively scaled distribution. Confused yet? Let’s take a look at how Docker works in comparison to a typical virtual machine and the advantages that it provides.
VMs vs. Containers
By now, you are likely familiar with how a virtual machine works. A host operating system has a piece of software that sits on top of it that spawns a client machine with a guest OS. This means that if you want to run three different environments, you are going to need three virtual machines; three times the storage space, three times the memory, three times the processing power.
Containers take a different approach. With a container, you can combine everything that you need for your application to run in one neat package. This means your application software, any libraries, system files and operating files are all included in the container. When you run your software through the Docker engine, you access the native operating system of the machine that is running on. Any other containers that are going to run can share the OS and infrastructure via the Docker engine. This is a massive savings in memory, since you only need to spawn one version of the kernel that all of the containers share.
Docker containers are able to run anywhere in any infrastructure since they carry everything they need with them in order to run. This eliminates the need for completely separate development environments since you can share the kernel and the dependencies are all brought along with the container.
What Docker Isn’t
Don’t confuse Docker with the more commonly known Linux container technology. It is a different animal and isn’t really like LXC. It is also not a configuration manager like Chef, Puppet or SaltStack. Docker still isn’t very good at linking across servers or VMs (yet), but there is hope for this functionality soon.
Why Haven’t You Heard of It
You may be thinking to yourself that it would be perfect for your environment, so why haven’t you heard about it yet? Docker hasn’t caught fire just yet because of some reservations production users have about the downside of Docker. Here are a few of them:
- Building Image containers for large applications is still a bit difficult. The time to create a container for deployment of large applications is cumbersome. Dockerfiles includes many application specific dependences, and several abstraction layers that make building images slow.
- There is no great logging solution for Docker right now. There are some custom built solutions, but they are not widespread. While not exciting, it can be an issue.
- Docker is a cutting edge solution which means the need to run cutting edge kernels to support it. Many of these are not fully tested and have issues that users are not willing to deal with.
Contact Izenda for information on how Docker might be able to help you to leverage the most of your BI applications.