Docker – My Questions Answered

Share this:

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.

Examples are:

  • 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.

  1. Docker can run on any infrastructure, you can run docker on your laptop or you can run it in the cloud.
  2. 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.
  3. 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.

docker_vmware

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.

Conditions are:

  • Application should run in an isolated environment.
  • Application should be available to be redeployed at any moment in a very fast manner.

Solution 1.
In vSphere world what we would usually do, is:

  1. Deploy OS in a VM running on vSphere.
  2. Deploy an application inside OS.
  3. Create a template.
  4. 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.

Solution 2.

  1. Deploy Docker.
  2. Deploy the app GOODAPP in container.
  3. 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.

Conclusion:

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.

 

The following two tabs change content below.
Aram Avetisyan is an IT specialist with more than 18 years experience. He has rich background in various IT related fields like Cloud, Virtualization and SDN. He holds several industry level certifications including but not limited to VCIX-DCV, VCIX-NV. He is also a vEXPERT in years 2014-2021.

About Aram Avetisyan

Aram Avetisyan is an IT specialist with more than 18 years experience. He has rich background in various IT related fields like Cloud, Virtualization and SDN. He holds several industry level certifications including but not limited to VCIX-DCV, VCIX-NV. He is also a vEXPERT in years 2014-2021.
Bookmark the permalink.

13 Comments

  1. Great article Aram, thanks for it!

    I tried understanding what Docker is on my own, but not being a *NIX guy containers seemed strange. Will you turn this article into a series about Docker(installation, deployment of containers) targeted for the VMware engineer/admin audience ?

    • Hey Aylin, Thanks for your comment!

      There are quite a lot Installation guides/How-to’s on Docker, even on official website.
      So, not sure if it makes seance. But, if I will find some interesting case/topic which is not covered well, I will for sure write about it.

  2. Ok, sounds a lot like Thin-app, app-v, citrix zen-app. what is different? Why would I use Docker over one of these technologies?

    • Thanks for the comment MORDOCK.

      My opinion is, that although Docker technology sound similar to what Thin-app and appv, they are completely different. They have different purposes.

      Thin-app and similar technologies are designed to package applications to be used on thin desktops. They are more similar to archives than to containers. You just take an app, package it and provide packaged/thin application to users.

      Containers at their turn are more similar to VMs. You can run web-server, a database, or a load-balancer in a Docker container. Docker containers have their own IP, containers can run directly in memory, containers can auto-restart themselves in case of failure and much more.

      In my opinion Container technology cannot be compared to thin-app technology.

  3. Thin-app is not just for desktops. Thin-app has been enhanced to be able to package services and deploy them to servers. Having them start on boot and giving them an IP address, etc. is not a problem. So far I don’t see an advantage to learning another architecture to do what I already can do with tools I already have. Enlighten me swami.

    • Well, most probably you have more experience with Thin-app than I do. In my long-run career I’ve never considered using thin-app in the way you describe. Does thin-app even able thin Linux apps, or to run application on Linux without Wine? Any way, for me, it looks like using Apache Httpd as a file server. I don’t say it is not possible, it for sure is.

      What comes to advantage of learning new technologies . Well, everyone thinks different. Some people prefer to be aware of other possibilities, to learn something new, and some stick to what they know. It’s a matter of preference. You definitely don’t have to learn about Docker, if you don’t want to

      Thanks for your comments.

  4. PS. Back 8 or 10 years ago, when VMware was first talking about buying Spring, they were talking about creating something like containers that would run directly on ESX, without an intervening VM. I am not sure the word “container” was used back then, but the concept was supposed to be one of the goals of buying Spring. Now that would be worthwhile.

  5. Pingback: Docker - My Questions Answered - How2VM

  6. Pingback: TheVirtualist.org runs for Top vBlog 2015 - The Virtualist

  7. Great article. I’ve done Linux and Solaris most of my life. With Solaris Zones (by default, but it doesn’t have to be like that) the OS image is shared by all zones on the host. This means deploying a new zone can indeed be very quick because the OS already exist. It also means the difference to Docker is very small. Having worked with containerization technologies in (especially) Solaris) for the past 10 years but also in AIX, it does seem to me that there’s a certain amount of Linux-hype in this. Linux is now – finally – moving in a direction where you can reap some significant TOC benefits, but you’ve been able to do that for decades on other platforms. Docker is part of Linux’ process to maturity and being a Linux fan myself I can only applaud that.

    Lately it seems Docker is distancing itself a bit from the underlying containerization technology. This means Docker can potentially run on top of LXC on Linux but on top of Zones if run on Solaris. So Docker is moving in the direction of putting the emphasis on the API. This makes a lot of sense to me. The true value of Docker is the APIs and the “packaging of the app”, not the containerization as such.

    • Great comment Ejnar, thanks a lot for it.

      As far as I know Docker was initially developed as tool for developers, hence the emphasis on the API and everything related to development. If I am not mistaken, the project slogan at some point was “From developers to developers”.

      What comes to a value, for me personally the biggest value of Docker as such is the fact that it made people take another, better look on Linux. Docker pushed people to start creating in field of containerization. Such great things like CoreOS with Rocket and VMware’s Project Photon, happened after Docker started the movement.

      I’m really looking forward to whats next with this technology. May be docker integrated in ESXi, or something more crazy, who knows 🙂

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.