DockerをCentOS6.4にインストールする方法

  • 31
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

参考:http://oss.fulltrust.co.jp/?p=537
↑のサイトの方が最新版のDockerを動かす方法についてこちらに載せておられるそうです.

以降は全部rootで実行する.

  • リポジトリの設定とdocker-ioのインストール
 # wget -P /etc/yum.repos.d  http://www.hop5.in/yum/el6/hop5.repo
 # yum install xz -y 
 # yum install docker-io -y 
  • 起動スクリプトの作成

/etc/init.d/lxc-docker
このファイルを配置し,下記コマンドを実行する.
なお,↑のファイルではrepositoryの保存場所を/shareに変更している
(デフォルトだと/var/lib/docker に作成される.デフォルトに戻すのであれば,start 及び restartのところの-g /share を削除すればOK)

# chmod 755 /etc/init.d/lxc-docker
# chkconfig --add lxc-docker
  • GRUBの設定&ホストOSの再起動
# sed -i 's/default=1/default=0/' /boot/grub/grub.conf 
# reboot
  • Docker起動

CentOS起動後下記のコマンドを実行すると,centosイメージをdockerが起動し,bashシェルでイメージ内部に入る(centosイメージが無い場合は,共有レジストリ(docker.io)から自動的にDLして実行してくれる)

docker run -i -t centos /bin/bash

終了するときはexitで抜ければOK.同時に実行されているコンテナ(centosのイメージを動かしているもの)も終了する.

セットアップ時の注意点

WARNING: IPv4 forwarding is disabled

docker run実行時に,WARNING: IPv4 forwarding is disabled.*というWarningが出る場合,dockerコンテナ内で正常にネットワークが使えなくなることがある.
その場合,vi /etc/sysctl.conf を実行し,net.ipv4.ip_forwardの値を1にすればOK.

lxc-start: Permission denied - failed to create symlink for kmsg

lxc-docker start時にPermission Deniedと出て実行できない場合,SELinuxの実行を疑う.setenforce 0 と実行して,lxc-dockerが正常に実行できた場合は,SELinuxのせいなので,/etc/selinux/configの中のSELINUXの値をdisabledにする.

コンテナ内から外部にネットワークがつながらない

ひとまずホストOSのiptablesを止めてみる(Stopだけだと正常に通信できない場合が事例としてあったので,その場合はStopしてchkconfigから自動起動をOFFにして再起動して試してみる).
勿論iptablesが必要な場合は,コンテナからホストへの仮想NICの通信をiptablesで許可してあげればOK.

ulimit: open files: cannot modify limit: Operation not permitted

コンテナ内でulimitを設定する際に出ることがあります.例えばmongodの起動スクリプト(/etc/init.d/mongod ).
まずコンテナ内で ulimit -aoepn files (-n) の値を確認し,その値が今設定しようとしている値より小さく,かつ,その場で ulimit -n 65535 等を実行した際にも↑のエラーメッセージがでる場合,一度コンテナ外に出て,ホスト側で下記を実行する.

# /etc/init.d/lxc-docker stop
# ulimit -n 65535
# /etc/init.d/lxc-docker start

要するに,一度docker daemonを止めて,ホスト側のulimit -nの数値を上げ,再度daemonを起動する.その後,コンテナを起動し,内部のulimit -n の値を確認すると,同様に65535になっている.

参考:https://groups.google.com/forum/#!topic/docker-user/T45Kc9vD804

ちなみに,ubuntu環境でDockerを実行していた場合,/etc/init/docker.conf に下記記述(数値は適当.要はコンテナ内で設定されるものより大きければ良い)を追記して,sudo service docker restart と実行すれば良い

limit nofile 262144 262144