I’ve first heard about Docker during VMworld 2014, when partnership of VMware and Docker was announced. I am hard core VMware fan, so I became very interested of what Docker was.
While reading about Docker I realized that the technology looked strangely familiar. I was thinking: “Containers? Application isolation? Wasn’t this done long time ago in such systems as FreeBSD and Solaris?”
The more I was reading about Docker, the more questions I had. So I started exploring. This article is a compilation of questions I had, and answers I came up with.
Question 1: What exactly “Containers” are?
Containers are usually described as a lightweight virtualization, although it is very different. It is a technology which allows user to run an application in an isolated environment, basically in a container. Those coming from *NIX world can see similarity with chroot-ed applications.
Question 2: Is Container technology new?
No, it is not. Different variations of containers technology were out there in *NIX world for a long time.
- Solaris container (aka Solaris Zones)
- FreeBSD Jails
- AIX Workload Partitions (aka WPARs)
- Linux OpenVZ
Question 3: How is Docker different from other container technologies.
Well, Docker is a quite fresh project. It was created in the Era of Cloud, so a lot of things are done much nicer than in other container technologies. Team behind Docker looks to be full of enthusiasm, which is of course very good.
I am not going to list all the features of Docker here but i will mention those which are important to me.
- Docker can run on any infrastructure, you can run docker on your laptop or you can run it in the cloud.
- Docker has a Container HUB, it is basically a repository of containers which you can download and use. You can even share containers with your applications.
- Docker is quite well documented.
Question 4: How exactly containers (Docker in our case) are different from hypervisor virtualization (vSphere)? What are the benefits?
To run an application in virtualized environment (e.g. vSphere), we first need to create a VM, install an OS inside and only then deploy the application.
To run same application in docker all you need is to deploy that application in Docker. There is no need of additional OS layer. You just deploy the application with its dependent libraries, the rest (kernel, etc.) is provided by Docker engine.
This table from a Docker official website shows it in a quite clear way.
Another benefit of Docker, from my perspective, is speed of deployment. Lets imagine a scenario:
ACME inc. needs to virtualize application GOODAPP for testing purposes.
- Application should run in an isolated environment.
- Application should be available to be redeployed at any moment in a very fast manner.
In vSphere world what we would usually do, is:
- Deploy OS in a VM running on vSphere.
- Deploy an application inside OS.
- Create a template.
- Redeploy the template in case of need. Time of redeployment around 5-10 minutes.
Sounds great! Having app up and running in an hour and then being able to redeploy it in 5 minutes.
- Deploy Docker.
- Deploy the app GOODAPP in container.
- Redeploy the container with app when needed.
Benefits: No need of deploying full OS for each instance of the application. Deploying a container takes seconds.
Question 5: What is the use case for Docker.
Well, I think, docker is extremely useful in development environments. Especially for testing purposes. You can deploy and re-deploy apps in a blink of eye.
Also, I believe there are use cases where you can use Docker in production. Imagine you have some Node.js application providing some services on web. Do you really need to run full OS for this?
Eventually, if docker is good or not should be decided on an application basis. For some apps it can be sufficient, for others not.
Question 6: What about Docker +VMware partnership? How exactly is VMware going to use Docker?
For us, as VMware guys, there is nothing specific. Basically what was announced is that VMware will support running Docker inside VMware VM. In addition, VMware did some big investments into Docker project. You can read Docker Blog article to find out more on this.
Question 7: Wait, Wait. Docker in a VM? Does that even make sense?
The answer to this question is simple: Why not?
Imagine a customer that is a long time vSphere user and for their DevOps they want to utilize Docker.
So, why not? They can surely do that.
Question 8: But if we will run docker inside VM, wouldn’t this affect the performance?
There will be some overhead, I guess, if you will run some crazy IO apps. Actually, VMware did a good investigation on this and they posted the results in following article. Interesting reading if you are planing to deploy Docker plus VMware in production.
Question 9: OK, I want to try Docker, where should I start?
First place to start at is on Docker’s official “Try It” page.
If you want to deploy it yourself, check the installation guides page. There is an installation guide for almost every OS and every Cloud provider (not vCoud Air yet)
Question 10: I’m a VMware guy, should I care about Docker?
My credo is “Knowledge is never useless”, and, I guess, if you are reading this article you are already interested in Docker.
If you are an architect designing environments for customers, Docker is something you should be at least aware of. It is never nice when customer asks something you don’t know about, right?
But, if your daily work is to administer vSphere, work with VMs, create and delete snapshots, troubleshoot issues, in that case I don’t see any reason to deep-dive into Docker, at least not at this point. I would rather say: spend your energy on something more relevant to your work.
Funny fact: I asked one of my architect colleagues, if he knows what docker is, and he told me that it is most probably some kind of ski model 🙂 This was one of the reasons I decided to write this article.
Docker is a nice project which took an old idea and gave new life to it. Project got a lot of support and it is growing very fast. Definitely something interesting to keep in mind.
If you have any additional questions I will be happy to discuss those in comments bellow. Thanks.
Latest posts by Aram Avetisyan (see all)
- Configure Proxy settings for VSAN Health-Check Plugin(CLI) - August 11, 2016
- Replacing driver for MegaRAID SAS 9361-8i on ESXi 6 - July 12, 2016
- Remove and Re-Create Management Network (vmk0) VMkernel interface using ESXi Command line - July 6, 2016