面倒でした。特別な理由 (勉強目的、興味本意、何が何でも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 !!!