Updated 8/12/16 At VMworld last year there were various announcements around containers and VMware’s commitment to support this technology. Since I work at VMware, I have been been using this technology for over a year. When speaking with customers last year it dawned on me that most of our customers are just hearing about containers for the first time or have a little experience and understanding of them. So I decided to write this post as a reference. I was going to call it Containers for Dummy’s but if you are a vSphere admin you are pretty smart in my opinion!
What is a container?
Hopefully you have heard about VMware ThinApp. So, ThinApp is a way to package a windows application into a portable file that can be copied and run on any Windows Operating system without the need to reinstall the application. This is primarily used as a tool to simplify desktop management. For example a customer may use ThinApp to package different versions of Internet Explorer then share them on a Windows share drive so that they don’t need to maintain the fully installed version on each end users PC. Developers also use thinapp to run multiple versions of a Web Browser on their PC in order to test changes they make to a website they are developing.
Ok, but what is a Linux Container?
Much like a Windows ThinAPP, a Linux container is a packaging system for Linux Applications. Unlike ThinApp, Linux containers are not focused on improving the user desktop experience, they are focused on developing web scale applications like Apache and the back end infrastructure for mobile bleeding edge applications like Twitter and Uber.
By the way, containers are suddenly cool but they are not new.
- 2000 — FreeBSD Jails
- 2004 — Solaris Containers
- 2005 — OpenVZ
- 2008 — LXC becomes part of Linux OS
- 2011 — Warden –VMware (Part of Cloud Foundry)
- 2013 — Hello Docker
- 2014 — Rocket ???
- 2016 — Windows Containers ???
You can read more about the history here.
What does Docker have to do with containers?
Great question! To start, containers are native to Linux and they don’t need Docker to run. They are based on LXC which you can read more about here https://linuxcontainers.org/lxc/introduction/ Funny thing is they state it makes it easy for Linux users to manage containers! Humm, if it is so easy then why is there Docker? Enter Docker! Docker is an Open Source project that automates the deployment of applications inside software containers. Basically, Docker created an easy way to build, deploy and manage containers on Linux from the command line. Docker also created a place where anyone can push and pull container images to/from and named it Docker Hub or Docker Registry. When you install and run the Docker client it is per-configured to work with the public docker hub. You can also install a local Docker registry like Harbor behind your firewall. If you want instructions to install Harbor see my guide here. Developers love Docker because it is easy, fast and portable to any laptop they work on or to any cloud or infrastructure. And it just works!
So do Docker Containers replace VM’s?
Not exactly, at least it remains to be seen. Docker and containers are still relatively new and not all applications will be able to run in a container. Containers are also more attractive to developers that create Cattle type of applications that don’t need any persistent storage or state and are designed to be able to fail as long as another container is available. Also most of the images are running some sort of open source software. In most cases you will still need some components of the application to run in a VM or even on Physical Server if that application vendor does not support running in a VM.
But I’m a vSphere admin, why should I care about Docker or containers?
Like it or not, your developers are either already using or looking at containers. Eventually they will get to the point that their laptop does not have enough capacity to develop at the scale their application requires or they want to move from development to production. They will either deploy these containers on a Public cloud or come to you for a home for their containers in your data center.
How can I manage and monitor containers with the tools I have today?
First off let’s change the way we treat our developers. Traditionally when developers ask for application servers our immediate response is “here are some VM’s” this is because that is what we are most used to and VM’s are what we know.
Let’s not get too crazy though, so on the back end we are still giving them VM’s. With vSphere Integrated Containers the vSphere admin carves out a portion of a cluster for container provisioning, then we present the developer with the Docker API and they can run Docker commands to spin up containers.
On vSphere you see containers inside a minimal VM so that you can still manage it with vCenter so you can vMotion it and use vRealize Operations so that you can monitor it, even Site Recovery Manager so you can back it up. Literally you can follow all the same process and procedures you have in place for VM’s and Physical Servers. The great thing is the developer never knows the difference so they are more likely to use and continue to use your services! Everyone happy?
You can also add further policy and governance with vRealize Automation Containers as a Service
Running on VMware is the easiest path to adoption
Want to learn more?
- Come see me live at VMworld 2016 in Las Vegas on this very topic : CNA7522 – Containers for the vSphere Admin
- Check out the hands on Labs this year vSphere Integrated Containers from A to Z [SPL-1730-USE-1]
- Download and try it yourself vSphere Integrated Containers