はじめに
- オフィシャルの
docker
のクライアントがMacOS X
からも使えるようになったらしいので試してみた - リモートで稼働している
Docker
サーバー(Docker
サーバーという言い方で正しいかわからないけど)
参考
準備
環境
試して環境は以下のとおり。
ホスト名 | OS | docker | |
---|---|---|---|
クライアント | docker-client | MacOS X Marvericks | Docker version 0.7.4, build 010d74e |
サーバー | docker-server | Ubuntu 13.04 | Docker version 0.7.2, build 28b162e |
docker クライアント
boxen
を使ってインストールするので our-boxen/modules/people/manifests/${GIHUBID}.pp
を以下のように追加する。
homebrew::tap { 'homebrew/binary': } package { 'homebrew/binary/docker' : require => Homebrew::Tap["homebrew/binary"] }
インストール後、docker -v
すると以下のように出力された。
Docker version 0.7.4, build 010d74e
おお、やったー!
docker サーバー
サーバー側となる Ubuntu 13.04
にインストールされている docker
の設定について /etc/init/docker.conf
を以下のように修正する。
--- docker.conf.original 2014-01-25 14:28:09.769424260 +0900 +++ docker.conf 2014-01-25 14:28:48.173423611 +0900 @@ -11,5 +11,5 @@ if [ -f /etc/default/$UPSTART_JOB ]; then . /etc/default/$UPSTART_JOB fi - "$DOCKER" -d $DOCKER_OPTS + "$DOCKER" -d $DOCKER_OPTS -H=tcp://0.0.0.0:4243/ end script
修正後、sudo docker stop && sudo docker start
で再起動を行う。
早速使う
早速、docker
クライアントを使ってみる。
docker pull してみる
以下のように実行する。
docker pull -H=tcp://docker-server:4243 inokappa/wheezy-7.2-basic
以下のように出力されコンテナイメージのダウンロードが開始される。
これだけでも感動。
docker run してみる
毎回 -H=tcp://docker-server:4243
を指定するのは面倒なので、以下のように環境変数に設定してあげるとベラー*1。
export DOCKER_HOST="tcp://docker-server:4243"
設定したら改めて docker run
してみる。
docker run -t -i inokappa/wheezy-7.2-basic /bin/bash
以下のように見事に起動する。
おお、あたかもローカルでコンテナが起動しているかのようだ...。
docker build してみる
以下のように Dockerfile
を書いてコンテナを作ってみる。
cat << EOT >> Dockerfile FROM inokappa/wheezy-7.2-basic # MAINTAINER YOHEI KAWAHARA inokappa # RUN apt-get update RUN apt-get -y install sudo openssh-server # RUN mkdir -p /var/run/sshd RUN useradd -d /home/sandbox -m -s /bin/bash sandbox RUN echo sandbox:sandbox | chpasswd RUN echo 'sshuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers # EXPOSE 22 CMD ["/usr/sbin/sshd","-D"] EOT
そして、docker build
を実行する。
docker build -t inokappa/openssh .
暫くするとコンテナが出来上がる。
(略) Step 9 : EXPOSE 22 ---> Running in 26d6563bf3ae ---> 4e007fad243d Step 10 : CMD ["/usr/sbin/sshd","-D"] ---> Running in 803c1a7d8e13 ---> 620584d6c54f
出来栄え確認しておこう。
コンテナに SSH にログインしてみる
次に docker build
したコンテナに SSH
でログインしてみたいので以下のようにしてコンテナを起動する。
docker run -d -p 22 inokappa/openssh
起動すると ${Docker_ID}
が出力するので控えておく。起動の確認は docker inspect ${Docker_ID}
や docker ps
で確認する。今回、サーバーとクライアント、サーバー内で起動しているコンテナは以下のような状態になっている。
上記のようになっているのでコンテナへのアクセスに際しては docker ps
を使ってコンテナ上で稼働している SSH
ポートにバインドしているポートを確認する。
docker ps
以下のようにバインドされているポートを確認する。
以下のようにアクセスする。
ssh sandbox@${docker-server} -p 49154
見事にアクセス出来た。
最後に
- Mac から docker がイジれるようになったのは嬉しい!
- そう言えば、kitchen-docker もリモートの
docker
上のコンテナでテストが走ってたよなー
*1:better