A Quick Introduction to CoreOS

In this post, I’m going to provide a very quick introduction to CoreOS. CoreOS, in case you haven’t heard of it, is a highly streamlined Linux distribution designed with containers, massive server deployments, and distributed systems/applications in mind.

CoreOS is built around a number of key concepts/technologies:

  1. The OS is updated as a whole, not package-by-package. CoreOS uses the Omaha protocol—initially engineered by Google for updating things like the Chrome browser and Chrome OS—to stay up-to-date with new versions. CoreOS also employs an active/passive dual root partition scheme. This dual root partition scheme allows CoreOS to run off one root partition while updating the other; the system then reboots onto the updated partition once an update is complete. If the system fails to boot from the updated partition, then reboot it again and it will revert to the known-good installation on the first partition.
  2. All applications run in containers. CoreOS provides out-of-the-box support for Docker containers. In fact, all applications on CoreOS run in containers. This enables separation of applications from the underlying OS and further streamlines the CoreOS update process (because applications are essentially self-contained).
  3. CoreOS leverages systemd. systemd is not unique to CoreOS; it is the new standard system and service manager for Linux. (Debian has elected to use systemd; Ubuntu will adopt systemd with 14.10, if I understand correctly; and Red Hat and related distributions already use systemd.) In CoreOS, systemd unit files are used not only for system services, but also for running Docker containers.
  4. CoreOS has a distributed key-value data store called etcd. The etcd distributed key-value data store can be used for shared configuration and service discovery. etcd uses a simple REST API (HTTP+JSON) and leverages the Raft consensus protocol. Docker containers on CoreOS are able to access etcd via the loopback interface, and thus can use etcd to do dynamic service registration or discovery, for example. etcd is also configurable via cloud-init, which means it’s friendly to deployment on many cloud platforms including OpenStack. More information on etcd is available via the etcd GitHub site.
  5. CoreOS supports deploying containers across a cluster using fleet. Fleet is another open source project that leverages etcd to deploy Docker containers (written as systemd unit files) across a cluster of CoreOS systems. Fleet leverages both etcd and systemd to support the deployment of containers across a cluster of systems. See this page for more information on clustering with CoreOS and fleet.

Taken individually—the use of a minimal Linux distribution, systemd support, the distributed key-value data store, Docker support, dual root partition w/ recoverable system updates, fleet—these technologies are interesting, but not all that revolutionary. Put them all together, however, and you have (in my opinion) a very interesting solution.

I’m quite intrigued with CoreOS and do plan on spending more time with it in the near future, so stay tuned for additional posts. In the meantime, if you’d like to see something specific about CoreOS or any related technologies, please speak up in the comments. I’ll do my best to satisfy your requests!

Tags: , ,

  1. Lenie’s avatar

    Thank you for the reference to the Omaha project, I was wondering what that was called.

    We are living in interresting times. :-)

    With the host and the container and a large number of applications running inside them getting more and more stateless (12factor).

    Did you also know RedHat has a similar project ?: Atomic Project.

    And the systemd developers also have some plans to make it easier to build these stateless systems:

    http://0pointer.de/blog/projects/stateless.html

  2. termlen0’s avatar

    If the latest RHEL includes the docker container technologies, what in your opinion might be a reason for enterprises to evaluate CoreOS (is there even a convincing use case to, at that point?)
    Any thoughts around cloudfoundry ?

  3. slowe’s avatar

    Termlen0, the inclusion of Docker container technologies is not the only thing that separates CoreOS from other Linux distributions. As I mentioned in the post, taking each of the technologies within CoreOS by itself is not that great, but when you combine them together it becomes quite useful. Note that Red Hat has a project to create something like CoreOS; it’s called Project Atomic. (I believe some other comments on this article also referenced Project Atomic.) The presence of Project Atomic tells me that simply including container technologies isn’t the same as building a Linux distribution that is specifically tailored for massive deployments in cloud computing environments. (My 2 cents)

  4. slowe’s avatar

    Lennie, I was indeed aware of Project Atomic, but thanks for mentioning it nevertheless. Also appreciate the pointer to the work the systemd developers are doing on stateless systems. Thanks!

  5. Lenie’s avatar

    @slowe There is one other link I could add. So far the only person that, if you ask me, has really figured out where things are going for running things inside of Docker containters is Jeff Lindsay:

    That to me, seems to be the path do running a private PaaS for developers.

  6. Lenie’s avatar

    Maybe ‘deploy your own PaaS’ is a better description then ‘private PaaS for developers’.

  7. Ken Crandall’s avatar

    Interesting about the “Omaha Protocol” but this is no different than hardware manufacturers have been using for firmware for many years (including some PC BIOS implementations!)

    It is interesting that it is being used for a pure-software OS, though.

    Great article, as always!

  8. slowe’s avatar

    Ken, I agree that the dual root approach is nothing new for hardware manufacturers; the innovation is applying to a pure software solution.

  9. Chris’s avatar

    Not sure it is even innovative for software. Solaris has had multiple boot environments for some time.

    Still the packaging of it all will be a welcomed option for Linux.

  10. Lee’s avatar

    Yep, AIX has had it for years too.

Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>