面倒でした。特別な理由 (勉強目的、興味本意、何が何でもSL6が使いたい ) がないなら Ubuntu で動かしたら良いと思います ...
用意するもの
Docker を SL6 で動かすに当たっていろいろ自分で用意しないといけません
- Aufs 付きカーネル
- iptables で足らないモジュールを追加
- go
- LXC
- Cgroup
- Docker
以下手順をずらっと書いておきます。more better なやり方がありましたらブコメ等でご指摘ください :)
カーネルをビルドできるように丸っと入れる
sudo yum groupinstall 'Development Tools'
aufs のパッチが当たったカーネルをビルド
git clone git://github.com/sfjro/aufs3-linux.git
git checkout aufs3.9
make oldconfig
make menuconfig
menuconfig で以下のオプションを有効にする必要があります
Symbol: AUFS_FS [=y]
Type : boolean
Prompt: Aufs (Advanced multi layered unification filesystem) support
Defined at fs/aufs/Kconfig:1
Depends on: MISC_FILESYSTEMS [=y]
Location:
-> File systems
(6) -> Miscellaneous filesystems (MISC_FILESYSTEMS [=y])
Symbol: NETFILTER_XT_MATCH_ADDRTYPE [=n]
Type : tristate
Prompt: "addrtype" address type match support
Defined at net/netfilter/Kconfig:798
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && NETFILTER_XTABLES [=y] && NETFILTER_ADVANCED [=y]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> Core Netfilter Configuration
(1) -> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
Symbol: NF_NAT_IPV4 [=m]
Type : tristate
Prompt: IPv4 NAT
Defined at net/ipv4/netfilter/Kconfig:133
Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && IP_NF_IPTABLES [=m] && NF_CONNTRACK_IPV4 [=m]
Location:
-> Networking support (NET [=y])
-> Networking options
-> Network packet filtering framework (Netfilter) (NETFILTER [=y])
-> IP: Netfilter Configuration
(2) -> IP tables support (required for filtering/masq/NAT) (IP_NF_IPTABLES [=m])
Selects: NF_NAT [=m]
Symbol: MEMCG [=y]
Type : boolean
Prompt: Memory Resource Controller for Control Groups
Defined at init/Kconfig:825
Depends on: CGROUPS [=y] && RESOURCE_COUNTERS [=y]
Location:
-> General setup
-> Control Group support (CGROUPS [=y])
(3) -> Resource counters (RESOURCE_COUNTERS [=y])
Selects: MM_OWNER [=y] ビルドしましょう
# ccache とか 並列度とかは適当に make sudo make modules_install sudo make install # 後は grub を設定して再起動してね
go は バイナリを置く
wget http://go.googlecode.com/files/go1.1.1.linux-amd64.tar.gz tar xvfz go1.1.1.linux-amd64.tar.gz sudo mv go /usr/local sudo ln -sv /usr/local/go/bin/go /usr/local/bin
LXC は RPM としてビルドして入れる
wget http://lxc.sourceforge.net/download/lxc/lxc-0.9.0.tar.gz rpmbuild -ta lxc-0.9.0.tar.gz sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/lxc-0.9.0-1.el6.x86_64.rpm ~/rpmbuild/RPMS/x86_64/lxc-libs-0.9.0-1.el6.x86_64.rpm
Docker のインストール
curl get.docker.io | sudo sh -x sudo ln -sv /usr/local/bin/docker /usr/bin
ip_foward しないと ホストOS とコンテナ間でパケットが転送されない
sudo sysctl -w net.ipv4.ip_forward=1
Cgroup も マウント ...
sudo mount -t cgroup cgroup /cgroup
いでよ Docker !
sudo /usr/bin/docker -d
docker run base /bin/echo hello
enjoy !!!