Over the past six months I have reviewed five minimal Linux distributions that are optimized for running containers: Alpine Linux, CoreOS Container Linux, RancherOS, Red Hat Atomic Host, and VMware Photon OS. Generically known as “container operating systems,” these stripped down, purpose built Linux distributions are not the only way to run containers in production, but they provide a base that does not waste resources on anything besides container support.
The state of the industry with container deployment systems is very much like the early days of Linux distributions. You have one key element, in this case the Docker container, that is surrounded by a number of competing ecosystem components. Just as the traditional Linux distros bundled different package managers, desktop environments, system utilities, services, and apps, most container distributions mix and match various components to create what they consider an optimum solution. Take for example distributed configuration and service discovery. There are several solutions for this such as Etcd, Consul, and ZooKeeper.
Each distribution takes a different approach to what to include in the stack. On one extreme there are distributions designed to support only the higher levels of the stack, such as CoreOS Container Linux and Red Hat Project Atomic. So much of the functionality has been put into the proprietary management layer that there is little hope of using the OS for anything else. Other distros, such as RancherOS and VMware Photon OS, provide greater flexibility, supporting multiple ecosystem components and orchestration systems. These give administrators a good way to experiment and potentially avoid vendor lock-in.
, the underlying operating system for many official Docker images, is a great choice for the task. A mere five megabytes in size, Alpine Linux is on the opposite end of the spectrum from the full-fat Linux distributions of a few years ago, which were competing with Solaris and intended to run on massive hardware systems. This new breed of Linux is designed to run on embedded hardware, and consume minimal resources, making it a perfect choice for containers.