本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。
先月の記事(第31回)は、Azure仮想マシンの仮想マシンギャラリーにある「CoreOS」のテンプレートから仮想マシンを作成して、「Docker 1.5」を試してみるという内容でした。
記事の最後で、マイクロソフトとDocker社の協業の成果である「Docker Client for Windows」を使用して、WindowsのコマンドプロンプトからCoreOSのDockerをリモート管理する方法について触れました。このDocker Client for Windowsが、2015年4月16日にリリースされた「Docker 1.6」の正式リリースで“Preview”として統合されました。
Docker Client for Windowsは、Windows上でネイティブに動作する「docker」コマンド(docker.exe)です。Docker Client for Windowsのインストール方法は、上のブログ記事でも説明されていますが、Windowsしか使ったことがなく、Linuxやオープンソースソフトウエア(OSS)に不慣れな方には少々難しいかもしれません。
Docker Client for Windowsのインストールは次の三つの方法のうち、いずれかで行います。Dockerはオープンソースなので、この他にも方法はいろいろとあるかもしれません。
(1)と(2)は、Docker Client for WindowsのWindowsバイナリをインストールする方法で、上のブログ記事で説明されています。(3)は、Docker 1.6のソースからDocker Client for Windowsだけをビルドして「docker.exe」を作成する方法です。こちらは、本連載第31回の記事内で紹介した方法になります。
Dockerは初めてという方がDocker Client for Windowsを試そうという場合、多くの人が以下のドキュメントを参照して、「Boot2Docker」をインストールすると思います(画面1)。そして、試した人の中には、うまくできなかったという人もいるでしょう。
Boot2Dockerは、Dockerコンテナーの実行環境をWindowsやMac OS Xで利用可能にするものです。Docker 1.6でWindowsにネイティブに対応したのは、Docker Client for Windowsだけです。Docker Engineの対応は次期Windows Serverで予定されており、Docker 1.6にはもちろん含まれていません。
Boot2Dockerを使用すると、あたかもローカルのように、Docker Engineをdockerコマンドで操作できるようになります(画面2)。実際、Boot2Dockerは「Oracle VirtualBox」の仮想マシン環境にLinux仮想マシンを展開し、その中でDocker Engineを動かしています。Boot2Dockerを起動するための「boot2docker start」は、Oracle VirtualBoxでLinux仮想マシンを起動し、Linux仮想マシンの内部で動作するDocker EngineとのTLS(Transport Layer Security)通信による接続を自動的にセットアップしてくれているのです。
Boot2Dockerで使用するDockerクライアントは、Docker Client for Windowsに違いありませんが、Docker EngineはLinuxで動いているということにご注意ください(画面3)。
Boot2Dockerをインストールすると、Docker Client for Windowsだけでなく、Boot2Dockerの管理ツール、Linux仮想マシンをセットアップするためのISOイメージ、Oracle VirtualBox、および「Git for Windows Preview」がインストールされます。くれぐれも、Docker2DockerがDocker Client for Windowsであると勘違いしないようにしましょう。
なお、Windowsのデスクトップに作成される「Boot2Docker start」を使用すると、Git for WindowsのエミュレートされたUNIXシェル環境(MINGW32)で、Docker Client for Windowsを使用したDockerコンテナーの実行や構成が可能です。
リモートのDocker Engineに接続する場合は、「Boot2Docker start」を使用する必要はありません。Docker Client for Windowsは「C:\Program Files\Boot2Docker for Windows\docker.exe」にあります。「docker.exe」は、WindowsのコマンドプロンプトやWindows PowerShellからも実行できます(画面4)。
Boot2DockerのDocker Engineは、Oracle VirtualBoxの仮想マシン環境で動作するということは、Oracle VirtualBoxが動かない環境ではBoot2Dockerが動作しないということです。
Boot2DockerはWindows 7 Service Pack(SP)1およびWindows 8でテストされているそうですが、32ビット環境にはインストールできません(画面5)。また、プロセッサーがハードウエア仮想化支援機能(Intel VTやAMD-V)をサポートしている必要があります。
Oracle VirtualBox以外の仮想化ソフトウエアを使用している場合は、それらが競合する可能性もあります。例えば、Windows 8/8.1のクライアントHyper-VとOracle VirtualBoxは同時に実行できません。
そのため、クライアントHyper-Vが動作している環境では、Boot2DockerはOracle VirtualBoxのLinux仮想マシンを起動できません(画面6)。Oracle VirtualBoxのインストールにより、既存の仮想化ソフトウエアの実行に影響することもあるので、仮想化ソフトウエアを利用している場合は、安易にBoot2Dockerを導入するべきではありません。
また、Boot2DockerはOracle VirtualBoxに4プロセッサー、2GBメモリの仮想マシンを作成します。PCに十分なリソースがないと、Boot2Dockerの実行でPCのパフォーマンスが大きく劣化することもあるので注意してください。
本連載第31回で説明したようなAzure仮想マシン上のDockerをWindowsからリモートで管理したい場合、あるいはすでにあるDocker EngineをWindowsからリモートで管理したいという場合は、Docker Client for Windowsだけをインストールする方がトラブルは少ないでしょう。
Windows向けのパッケージ管理ツール「Chocolatey」を使用すると、Docker Client for Windowsの最新バイナリだけを、数行のコマンドラインでインストールすることができます(画面7)。
また、本連載第31回で書いたように、DockerクライアントのAPI(Application Programming Interface)のバージョンは、管理対象となるDocker EngineのサーバーAPIバージョンと一致している必要があります。Docker 1.6のDocker Client for WindowsのクライアントAPIバージョンは「1.18」です。
それ以前のAPIバージョンを使用したい場合は、ソースからビルドする必要があるようです。具体的な手順については、筆者の個人ブログにまとめてありますので、参考にしてください。
岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2015)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.