An OS designed for containers
March 2013 saw the public release of Docker, bringing Linux containers (based on cgroups, namespaces) to mainstream technology status. Traditional Linux distributions — Ubuntu, Debian, CentOS, RHEL — were designed in the 1990s-2000s for pet servers: long-lived machines, manually configured, updated package by package. Typical features (tens of thousands of available packages, stateful management, custom kernels) are oversized for a host that only has to run containers.
CoreOS was born in October 2013 as a startup by Alex Polvi and Brandon Philips with a clear thesis: an OS natively designed for containers is needed. The first stable public release is in December 2013.
Design features
CoreOS Linux (later renamed Container Linux in 2016) introduces radical server-OS choices:
- Minimal image — about 200 MB base, without runtime package manager. Only kernel, systemd, OpenSSH, Docker/rkt
- Read-only root filesystem —
/usris read-only; configuration sits in/etc, data in/var, applications inside containers - A/B atomic updates — two
/usrpartitions, CoreOS downloads the new image to the inactive partition, reboots onto the updated one; on failure it can roll back - Automatic updates — by default each node auto-updates according to “channel” policies (stable, beta, alpha)
- Cloud-config — YAML provisioning file (later replaced by Ignition) to configure systemd units, accounts, network, certificates
- Systemd everywhere — all services are systemd units, including Docker
- Apache 2.0 licence for original CoreOS components
CoreOS components
The initial CoreOS ecosystem articulates as:
- CoreOS Linux — base distribution
- etcd (February 2014) — consistent distributed key-value store (Raft consensus), for distributed configuration. Will become a central Kubernetes component
- fleet — service orchestrator across CoreOS clusters, based on systemd + etcd. Later deprecated in favour of Kubernetes
- rkt (Rocket, 2014) — alternative container runtime to Docker, with a more modular approach
- flannel — container networking
- Container Linux Update Operator — later component for update management
The “immutable infrastructure” philosophy
CoreOS promotes the immutable infrastructure concept: servers are not configured by modifying them but by replacing them. If you change something in the base system, you build a new image, roll it out, the nodes reboot updated. It is the opposite of the traditional pets model; it anticipates practices that will become widespread in the Kubernetes era.
This approach pairs naturally with Docker containers: the application is the container image, the OS is the CoreOS image, both are versioned and reproducible artefacts.
The 2013-2018 market
At the 2013 debut, CoreOS competitors are still few:
- Ubuntu Core (Canonical) — in preparation, 2014-2015 release
- RancherOS (Rancher Labs) — 2015, very minimal
- Project Atomic (Red Hat) — 2014, trimmed RHEL/CentOS distributions for containers
CoreOS has first mover and a strong community. Between 2014 and 2017 CoreOS is the reference choice for production container clusters for:
- Startups that adopted Docker early
- Google Cloud — GCE CoreOS as available OS
- AWS — CoreOS as supported AMI
- On-premise environments with early Kubernetes
Red Hat acquisition and convergence
In January 2018 Red Hat acquires CoreOS Inc. for USD 250 million. Integration leads to:
- Fedora CoreOS — Container Linux’s evolution in the Fedora ecosystem
- Red Hat CoreOS (RHCOS) — enterprise version, base of OpenShift 4
- etcd consolidated as Kubernetes storage backend
- rkt deprecated (Kubernetes standardises on Container Runtime Interface and CRI-O / containerd)
- Operator Framework — pattern born in CoreOS for managing stateful applications in Kubernetes, becomes mainstream
Container Linux receives its last update in May 2020; Fedora CoreOS/RHCOS picks up the legacy.
What remains of CoreOS
The CoreOS project as autonomous brand ends in 2020, but its influence is visible everywhere in cloud-native:
- etcd is central in every Kubernetes deployment
- Immutable infrastructure is standard practice
- A/B atomic updates emerge in other OSes (Talos Linux, AWS Bottlerocket, Flatcar Linux fork of Container Linux)
- Operator pattern is the model for complex Kubernetes applications
The pattern minimal distribution + container + atomic updates is today standard for specialised OSes (MicroK8s, Bottlerocket, FlatCar, RancherOS).
In the Italian context
As of 2013-2014 CoreOS is experimentally adopted by advanced Italian teams (Docker-native startups, research labs, some large ISPs). With Kubernetes’ arrival (2015) and the maturation of Italian public cloud offerings, the CoreOS philosophy integrates into the fabric of Italian container platforms, both on-premise and cloud.
References: CoreOS (October 2013), Alex Polvi, Brandon Philips. First public release December 2013. etcd, fleet, rkt. Apache 2.0 licence. Red Hat acquisition (January 2018, USD 250M). Container Linux end-of-life May 2020; continuation as Fedora CoreOS and Red Hat CoreOS (OpenShift 4).
