さくらVPS(CentOS6.4)でDockerを使う
Docker 0.7からaufs以外のstorage driverがサポートされてCentOSでもDockerが使えるようになりました。
aufsがサポートされていなければ、起動時にdevicemapperを利用してくれるとのことです。devicemapperもサポートされていなければvfsを利用。
CentOSにはepel使って簡単にインストールできるようになったので、さくらVPSで使ってみました。
# CentOSのバージョンは6.4 $ cat /etc/redhat-release CentOS release 6.4 (Final)
centosイメージを取得
$ sudo docker pull centos $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 6.4 539c0211cd76 8 months ago 300.6 MB (virtual 300.6 MB) centos latest 539c0211cd76 8 months ago 300.6 MB (virtual 300.6 MB)
mysql-serverをインストール(失敗)
Dockerfileを書いてmysql-serverをインストールしてみます。
$ cat Dockerfile FROM centos RUN yum -y install mysql-server $ sudo docker build -t mysql-server . ...(省略)... Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was 14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'" Error build: The command [/bin/sh -c yum -y install mysql-server] returned a non-zero code: 1
エラー・・・
コンテナが参照するDNSを変更
上記エラーについて深く追ってはいないのですが、DNSを変更すればうまく動きました。
考えられるやり方は2つ。
- /etc/resolv.confを書き換えたイメージ作成してそれを利用
- dockerサービス起動時のオプションでDNS指定
今回は後者でいきます。
# 起動時オプションを指定 $ cat /etc/sysconfig/docker other_args="-dns 8.8.8.8" # dockerサービス再起動 $ sudo service docker restart
mysql-serverをインストール(成功)
Dockerfileは全くいじる必要ありません。
$ sudo docker build -t mysql-server . ...(省略)... Loaded plugins: fastestmirror Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mysql-server.x86_64 0:5.1.71-1.el6 will be installed ...(省略)... Complete! ---> 2e4d9c9867c3 Successfully built 2e4d9c9867c3
補足
Dockerfileで構築する場合("docker build"でやる場合)には、dockerサービスの起動時オプションでDNSを指定する必要があります。
"docker run"の場合は引数でDNSを指定できます。
$ sudo docker run -dns 8.8.8.8 -t centos ping -c 3 yahoo.co.jp
感想
VPSが貧弱だからか、それともaufsが使えないからなのか分からないのですが、コンテナ起動に時間がかかります・・・。
CentOS6.4ではstorage driverにvfsを使うようです。
$ sudo docker info Containers: 1 Images: 2 Driver: vfs
参考
- http://blog.docker.io/2013/11/docker-0-7-docker-now-runs-on-any-linux-distribution/
- Docker 0.7の変更点
- https://github.com/dotcloud/docker/issues/541
- DNSに関するgithub上でのやりとり