■ 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」を使うこともできます。
既に 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 の設定を変更する必要がないため、便利です。