Docker Client for Windowsを試してみた話

Docker Client for Windowsを試してみた話

Docker Client for Windowsを試してみた話 はてなブックマーク - Docker Client for Windowsを試してみた話


■ Docker 1.6 から登場した “Docker Client for Windows”とは

今日リリースされた(米国時間4/16) Docker 1.6 のBlog投稿。様々なツールのバージョンアップに加えて、「Docker Client for Windows」がリリースされたと書かれていました。これは、Windowsのコマンドプロンプト上から、直接 docker コマンドを使い、コンテナやイメージの操作ができるようになったものです。

ポイントをまとめると、

  • コマンドプロンプトから直接 docker を操作できるようになった
  • ただし、boot2docker のセットアップはまだ必要

という訳で、Mac OS X 上で Docker を操作できる環境と同じになりました。

■もう少し詳しく

これまでも Windows 上でも Docker を使う事はできました。ですが docker を使う為には、boot2docker のセットアップを行い、更に「boot2docker ssh」コマンドを実行し、ログインした仮想マシン上の Linux から docker コマンドを使うものでした。

今回の 1.6 でも boot2docker のセットアップは必要ですが、コマンドライン上から docker コマンドが使えるようになりました。もちろん、これまで通り「boot2docker ssh」を使うこともできます。

windows-docker16a

既に Docker 1.5 をセットアップ済みの場合、バージョンアップを行うにはまず boot2docker for Windows をダウンロードします。その後、セットアップをした後、「boot2docker upgrade」で新しい boot2docker 1.6 マシンイメージのダウンロードを行います(upgrade のかわりに、 boot2docker download -> boot2docker shellinit でも同じ結果になります )。

あとは、docker コマンドがコマンドプロンプトで使える事を確認します。docker psコマンドを使うと、次のように表示されます。

C:\Users\zembutsu>docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES

デスクトップ上の「boot2docker start」アイコンをクリックして、そこで docker コマンドを使えます。あるいは、他のコマンドプロンプト上でも「docker shellinit」を実行するか、環境変数「DOCKER_HOST」「DOCKER_CERT_PATH」「DOCKER_TLS_VERIFY」を定義することで、docker コマンドが利用できます。

■ Cygwin上での注意

Cygwin上ではバグがあるようで、docker コマンドは使えるものの、”-ti”オプションを付けてコンテナに入ろうとするとエラーになってしまう状況です。

とはいえ、それ以外のコマンドは使えます。使えるようにするには「boot2docker shellinit」コマンドを実行し、画面に出てくる export 行を実行する必要があります。

$ boot2docker shellinit
Writing C:\Users\zembutsu\.boot2docker\certs\boot2docker-vm\ca.pem
Writing C:\Users\zembutsu\.boot2docker\certs\boot2docker-vm\cert.pem
Writing C:\Users\zembutsu\.boot2docker\certs\boot2docker-vm\key.pem
 export DOCKER_HOST=tcp://192.168.59.103:2376
 export DOCKER_CERT_PATH='C:\Users\zembutsu\.boot2docker\certs\boot2docker-vm'
 export DOCKER_TLS_VERIFY=1

■VirtualBoxのホストオンリーアダプター操作

boot2docker では、起動時に通常は「192.168.59.103」という、自分自身のローカル環境上でアクセス可能な IP アドレスが利用できます。たとえば、ブラウザのポート 10080 から、コンテナ内のポート 80 に接続するためには、次のように実行します。

$ docker run -it -p 10080:80 centos

Linux 上では見慣れたポート設定は、Windows のコマンドプロンプトでも同様に扱えるようになります。都度 VirtualBox の設定を変更する必要がないため、便利です。