RancherOS is a container-native operating system designed solely for running Docker containers. It’s one of 6 operating systems designed just for Docker and other container runtimes in active development.
On an operating system of that nature, you need containers for providing system-wide services other than running applications. They are called system containers in Project Atomic, a container-native OS developed by the folks at Fedora. In this linked-to blogged post, Ivan Mikushin from Rancher, the company developing RancherOS, shows how to use Docker Compose to create such system containers.
In Rancher lingo, such containers are called system services, not system containers.
Here’s an excerpt from the article:
One of the first things you realize when deploying applications or infrastructure workloads as containers, is the need for support containers that provide secondary functions beyond the primary purpose of the host. We think of these support containers as “system services”, and they can be almost anything. A good example would be a monitoring or security agent, or perhaps a key value store.
These system services often need to start before the application workload, and they might need to run at the system level, as opposed to the user level. So we wanted to come up with a way to define the start-order, as well as determine whether a service runs on the system or user docker daemon. As you might imagine with a Docker focused OS, we looked at existing Docker projects, and decided to use Docker Compose to define application deployment.
Beginning with release of RancherOS v0.3.1, we started using Docker Compose files (compose.yml) to define system services. In the example below I’m creating a simple container logging service based on logspout which monitors container logs and sends them to a remote syslog service (e.g. using Papertrail):
Read the complete article here.