Go to file
Colin Walters 83d503e9d7 linux: Don't prepend process' cwd if rootfs path is already absolute
If I provide a path starting with `/` I expect that to be honored;
otherwise I have to explicitly `(cd /; /path/to/runc)`.

Signed-off-by: Colin Walters <walters@redhat.com>
2015-06-26 17:39:38 -04:00
Godeps Use godeps for building of vendored files 2015-06-22 09:23:17 -07:00
libcontainer Allow hyphen in "id" (based on `cwd` pathname) 2015-06-25 11:27:25 -07:00
.gitignore Initial commit of runc binary 2015-06-21 19:34:13 -07:00
LICENSE Initial commit of runc binary 2015-06-21 19:34:13 -07:00
Makefile Use godeps for building of vendored files 2015-06-22 09:23:17 -07:00
README.md Update README.md 2015-06-25 08:04:12 +08:00
checkpoint.go Initial commit of runc binary 2015-06-21 19:34:13 -07:00
events.go Initial commit of runc binary 2015-06-21 19:34:13 -07:00
main.go Merge pull request #30 from estesp/missing-rootfs-check 2015-06-26 09:03:49 -07:00
restore.go Initial commit of runc binary 2015-06-21 19:34:13 -07:00
run.go Make startup errors a bit friendlier 2015-06-25 00:19:44 -07:00
signals.go Initial commit of runc binary 2015-06-21 19:34:13 -07:00
spec.go Initial commit of runc binary 2015-06-21 19:34:13 -07:00
spec_linux.go linux: Don't prepend process' cwd if rootfs path is already absolute 2015-06-26 17:39:38 -04:00
tty.go Remove nsinit from comments 2015-06-24 11:29:50 +08:00
utils.go Remove nsinit from comments 2015-06-24 11:29:50 +08:00

README.md

runc

runc is a CLI tool for spawning and running containers according to the OCF specification.

Building:

go get -d github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc/
make
sudo make install

Using:

To run a container that you received just execute runc run with the JSON format at the argument or have a container.json file in the current working directory.

runc 
/ $ ps
PID   USER     COMMAND
1     daemon   sh
5     daemon   sh
/ $ 

OCF Container JSON Format:

{
    "version": "0.1",
    "os": "linux",
    "arch": "amd64",
    "processes": [
        {
            "tty": true,
            "user": "daemon",
            "args": [
                "sh"
            ],
            "env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "TERM=xterm"
            ],
            "cwd": ""
        }
    ],
    "root": {
        "path": "rootfs",
        "readonly": true
    },
    "cpus": 1.1,
    "memory": 1024,
    "hostname": "shell",
    "namespaces": [
        {
            "type": "process"
        },
        {
            "type": "network"
        },
        {
            "type": "mount"
        },
        {
            "type": "ipc"
        },
        {
            "type": "uts"
        }
    ],
    "capabilities": [
        "AUDIT_WRITE",
        "KILL",
        "NET_BIND_SERVICE"
    ],
    "devices": [
        "null",
        "random",
        "full",
        "tty",
        "zero",
        "urandom"
    ],
    "mounts": [
        {
            "type": "proc",
            "source": "proc",
            "destination": "/proc",
            "options": ""
        },
        {
            "type": "tmpfs",
            "source": "tmpfs",
            "destination": "/dev",
            "options": "nosuid,strictatime,mode=755,size=65536k"
        },
        {
            "type": "devpts",
            "source": "devpts",
            "destination": "/dev/pts",
            "options": "nosuid,noexec,newinstance,ptmxmode=0666,mode=0620,gid=5"
        },
        {
            "type": "tmpfs",
            "source": "shm",
            "destination": "/dev/shm",
            "options": "nosuid,noexec,nodev,mode=1777,size=65536k"
        },
        {
            "type": "mqueue",
            "source": "mqueue",
            "destination": "/dev/mqueue",
            "options": "nosuid,noexec,nodev"
        },
        {
            "type": "sysfs",
            "source": "sysfs",
            "destination": "/sys",
            "options": "nosuid,noexec,nodev"
        }
    ]
}

Examples:

Using runc 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