Physical/Virtual Machine vs Application Machine

TL;DR. With a physical/virtual machine, you program for an operating system. With an application machine, you program for a container runtime.

With all the confusion as to the real nature of containers, let me set the record straight.

A container, like the physical phenomenon called light, exhibits dual nature. That of an application and that of a machine.

It is not a machine in the sense of a physical or virtual machine.

It is not an application in the sense of an application on top of an operating system.

Guess what?

Let’s just say, a container is an intersection of a machine and an application, and I will dub it as an application machine.

When I say a container is like a machine, I am referring to containers as exhibiting features like having its own IP address and optional ports regardless if it has an OS inside or not.

APPApplication Machine

Application Machine

A container is neither an app nor a machine. It is an application machine.

Just as byte code runs on top of a JVM, Python VM and whatnot, a container runs on top of a Linux 3.10+ kernel and being managed by the Golang runtime embedded in Docker.

Historically, hypervisors were invented in part because you want to cram more virtual machines onto a physical machine. With a VM, you still program on top of an operating system. The VMs become portable machines.

In contrast, with containers you cram more application machines onto a physical machine. With a container, you still program on top of an operating system but this time, you program on top of an OCI-compatible Linux kernel. Containers become portable machines but in the app machine sense.

Implications of Containers (or Application Machines)

  • configuration management (CM) is relegated to managing the physical and/or virtual machine where the container runtime is installed
  • if you run a virtualization environment like Proxmox, it is also relegated to the same role as above
  • with containers, Dockerfile and the build process assume the CM of the container
  • more of these at this post (container vs configuration management)
  • a container is just one way of doing things, using a virtual machine is another. Let’s just say container vs VM is the computing version of AC vs DC debate. Bring it on!



Subjectivity aside, leave a reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s