https://www.opencontainers.org
http://www.publickey1.jp/blog/15/dockerrunclinuxwindows.html
すでにrunCもダウンロード可能です。
https://github.com/opencontainers/runc
こうなったら、やってみるしかありません。
みんながあまり好きではない、CentOS7で試してみましょう。
GOのインストールからスタートです。
エクセレントなやり方がわからず強引にやってます。
PATH、GOPATHの設定は.bash_profileにするといいと思います。
# yum install golang
# export GOPATH=$HOME/go
# export PATH=$PATH:$GOHOME/bin
# go get github.com/opencontainers/runc/libcontainer/utils
# go get github.com/opencontainers/runc/libcontainer/nsenter
# go get github.com/opencontainers/runc/libcontainer/devices
# go get github.com/opencontainers/runc/libcontainer/configs
# go get github.com/opencontainers/runc/libcontainer/cgroups
# git clone https://github.com/opencontainers/runc.git
# cd runc
# make
# make install
次は、dockerイメージをexportして、適当なディレクトリに展開します。
# docker export コンテナID > image.tar
# mkdir rootfs
# cd rootfs
# tar xvf ../image.tar
最後に、container.jsonを例にしたがって作成します。
長くなりますが、githubのREADME.mdをコピーして、ユーザーのみrootに変更します。
# cat container.json
{
"version": "0.1",
"os": "linux",
"arch": "amd64",
"processes": [
{
"tty": true,
"user": "root",
"args": [
"sh"
],
"env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TERM=xterm"
],
"cwd": ""
}
],
"root": {
"path": "rootfs",
"readonly": false
},
"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"
}
]
}
やっとコンテナを動かせます。
コマンドひとつです。
# runc
(ここからコンテナのシェルです)
# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
# pwd
/
# hostname
shell
# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 04:13 ? 00:00:00 sh
root 7 1 0 04:13 ? 00:00:00 ps -ef
#
もうちょっと突っ込んだことは、ぼちぼちみなさんやり始めるんでしょうね。
次はWindowsコンテナかw
0 件のコメント:
コメントを投稿