Open Container Project

Announcing runC - a lightweight universal runtime container.

About runC

runC is a CLI tool for spawning and running containers according to the OCP specification. The code can be found on Github.

Embeddable

Containers are started as a child process of runC and can be embedded into various other systems without having to run a Docker daemon.

Battle Hardened

runC is built on libcontainer, the same container technology powering millions of Docker Engine installations.

Compatible with Docker

Docker images can be run with runC.

Getting started

You can run Docker images pulled with Docker: first you need to run a container for that image, then export it’s file system.

$ docker export myapp > myapp.tar
$ tar xvf myapp.tar -C /tmp/myappfs
$ cd /tmp/myappfs

Or you can start with just a directory with a filesystem in it:

$ ls myapp
bin      etc      lib      linuxrc  mnt      proc     run      sys      usr
dev      home     lib64    media    opt      root     sbin     tmp      var

In that directory, create a manifest file for runC to run it, or let runC generate one for you.

$ runc spec > container.json

Edit container.json to specify the command you want to run inyour container, and any other options.

Run the container!

$ runc

Systemd Integration

runC does not create a daemon, so it integrates well with systemd.

[Unit]
Description=Minecraft Build Server
Documentation=http://minecraft.net
After=network.target

[Service]
CPUQuota=200%
MemoryLimit=1536M
ExecStart=/usr/local/bin/runc
Restart=on-failure
WorkingDirectory=/containers/minecraftbuild

[Install]
WantedBy=multi-user.target