Docker

Introduction

Here is a thought. Imagine, you are a programmer (in the early 2000’s), you have lots of software tools installed on your computer, and you are writing a program. Hypothetically the program connects to a database, it has an API layer, and the program is implemented as a website.

While writing this, you might have this all configured on your computer, but realistically, when you deploy the application, you would probably have a database server, and a webserver. You might even have an API server.

You might think. When this is done we’ll need a minimum of 3 computers to run this. If it’s used by a lot of people you might add more computers, maybe add more computers to setup redundancy, etc.

If you were a computer administrator (in the early 2000’s) you might think ‘Virtualization’. Maybe you’d setup VMWare on a server, that server then has 3 virtual computers setup, and places each of those processes into those different virtual computers.

In this case, the programmer thinks his program is installed on one computer, but really, it’s installed on 1 computer with 3 virtual computers setup.

For me, a programmer, I imagine that Docker another Virtual Server operating system. (whatever that is)

A difference is the virtual machines (in docker they are called Containers) running in Docker are lightweight, so you can run more containers on a computer then you could run virtual machines on virtual server running VMWare or Hypervisor

The Docker application is so popular that many, if not most of the bigger software vendors out there will create Docker Images containing their application and will then configure their application to run right out of the Docker container. It makes a descent sales tool. What makes this cool is that you can download one of these images, and they will be ready to use. (although blank ;^). This saves you a TON of time because you don’t need to install applications, and you don’t need to uninstall applications (Other than docker)

The above text paints a Rosy picture of the Docker universe. What is not said, is there is a learning curve to using Docker. And while the application is running, you need to figure out how to access that application so there are implications on using Docker which need to be understood.

In fact, Docker itself is pretty simple, and a lot of other projects are out there to even simplify Docker’s usage. One of the most popular is a program called Kubernetes. This is a program used to manage clusters of Docker containers.

Docker is so popular that setting up a bank of containers and hooking them all together is way more trivial than setting up an equivalent bank of servers to do the same thing. And it would cost a lot less.

Tutorial

References