8.1 – Understanding Docker & Containerization

“Docker, Kubernetes & Microservices, oh my!”

TL, DR:

Containers (like Docker) can be better than virtual machines because they share the same OS. Containers are faster, lighter & ensure that your apps work wherever that container is regardless of the server they live on. You can manage lots of containers using container schedulers (like Kubernetes).

Containers

Containers are easier to understand if you compare them to virtual machines. When you create a virtual machine (“provision one” for the annoying more-technical-than-it-needs-to-be term), you also need to install an operating system (OS) like Windows or Mac. It is nice that you can install any OS that you’d like on any machine that you create. If you have 10 virtual machines on a server you need to install the OS 10 times. That takes up lots of disk space. It also gets complicated for any software you need to run on a virtual machine to be compatible with different operating systems. If only there were a solution for that…

A container, like Docker or Kubernetes, solves this problem by including the operating system and other dependent files as part of the container. You install the Docker “image” (another complicating term that means folder with files) on the server and then your software programs rely on Docker instead of the VM and whatever files & OS it has.

In addition to solving the “Well it ran on my computer, not sure what is wrong with yours” problem noted above sharing makes your applications way faster & lighter.

Managing Lots of Containers

Containers still require management. You need to apply software updates, make sure the different parts are all working together & fix things when something goes wrong. This is easy when you have 1 server using Docker, but what about 10 or 1,000? What you really need is something to manage all of that, Kubernetes, Docker Swarm, & Apache Mesos do this. This is where the benefits of containerization start to compound.

  • Scale up and down how much computer space you are using & attendant cost saving.
  • Better manage deployment of new updates & software.
  • You can move a Kubernetes cluster from one hosting vendor to another with very little penalty.

Why is it so popular?

Containerization increases modularity. Think: fully functional smaller parts that fit together to make one whole thing.1Like Voltron if you are ancient or Power Rangers Megazord if you are only semi-ancient.

There is a massive movement toward modularity because it is easier to share work across teams both inside and outside your organization & manage the entire system according to good Dev Ops principles (see Dev Ops post). In fact, modularity is part of the movement toward service-oriented architecture, which is the design of software by including modular parts from a wide variety of inputs. Your software can then be a combo of a wild number of smaller services.

So what?

Think heavily about this in the setup of your Software design to maximize the quality & cost of your build.

Know this is a significant trend in cloud computing right now and that it will only continue to expand requiring competitive companies to keep up or fall behind.

Leave a Reply

Your email address will not be published. Required fields are marked *