runc in 30 seconds

runC is a CLI tool produced through the Open Container Project for spawning and running containers without having to run a Docker daemon. It makes use of libcontainer which powers the Docker Engine.

Let's take 30 seconds to try it out.

What you need:

  • runc package or binary installed
  • A root filesystem

runc package

I'm using Arch Linux which has runc available in the package repository and is installed along with Docker 1.11.

$ sudo pacman -Sy runc

For Ubuntu 16.04 use apt:

sudo apt install runc


We can either prepare a root-filesystem from scratch, extract one from a Linux distribution's rootfs.tgz file or export one from a container already run in Docker.

Let's extract a rootfs from a Docker image by running a container, then using docker export.

$ docker run --name node4 mhart/alpine-node:4 node
$ docker export node4 > rootfs.tar
$ mkdir -p ./rootfs
$ tar -xf rootfs.tar -C ./rootfs

Now generate a config file for runc and start the container. You will be given a Node.js REPL.

$ runc spec

Finally, pick a name for the new container and run it as root or sudo - launch node and try out a few commands:

$ sudo runc start node4_repl
/ # node
> process.version

Running the example on my machine:

Running the example in bash.

Learn more

Both runc and Docker make use of libcontainer but have very different CLIs. If you would like to learn more about how to customise runc, add networking and much more then check out the official homepage at: or the Github repo.

Popular on the blog this week:

Alex Ellis

Read more posts by this author.

Subscribe to Alex Ellis' Blog

Subscribe to keep in touch. By providing your email, you agree to receive marketing emails from OpenFaaS Ltd

or subscribe via RSS with your favourite RSS reader

Learn Go with my new eBook

eBook cover

"Everyday Go" is the fast way to learn tools, techniques and patterns from real tools used in production based upon my experience of building and running OpenFaaS at scale.

Buy a copy on Gumroad