I had some time recently to start playing around with Docker’s new runc / OpenContainers work. This is basically the old libcontainer, but now it’s an industry consortium governed by the Linux Foundation. So, Docker and CoreOS are now friends, or at least frenemies, which is very exciting.
The README over on runc doesn’t fully explain how to get runc to work, i.e., to run a simple example container. They provide a nice example container.json
file, but it comes with without a rootfs, which is confusing if you’re just getting started. I posted a github issue comment about how to make their container.json work.
Here are the full steps to get the runc sample working:
1. Build the runc
binary if you haven’t already:
cd $GOPATH/src/github.com/opencontainers
git clone https://github.com/opencontainers/runc
cd runc
make
2. Grab their container.json
from this section of the runc
readme: opencontainers/runc#ocf-container-json-format
3. Build a rootfs. The easiest way to do this is to docker export
the filesystem of an existing container:
docker run -it ubuntu bash
Now exit immediately (Ctrl+D).
docker ps -a # to find the container ID of the ubuntu container you just exited
docker export [container ID] > docker-ubuntu.tar
Then untar docker-ubuntu.tar into a directory called rootfs, which should be in the same parent directory as your container.json. You now have a rootfs that will work with the container.json linked above. Type sudo runc
and you’ll be at an sh
prompt, inside your container.