Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント山市良のうぃんどうず日記(34)

本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。

» 2015年05月07日 06時00分 公開
[山市良テクニカルライター]
「山市良のうぃんどうず日記」のインデックス

連載目次

Docker Client for Windows Previewが登場

 先月の記事(第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. パッケージ管理ツール「Chocolatey」で導入する
  2. 「Boot2Docker」で導入する
  3. ソースからビルドする

 (1)と(2)は、Docker Client for WindowsのWindowsバイナリをインストールする方法で、上のブログ記事で説明されています。(3)は、Docker 1.6のソースからDocker Client for Windowsだけをビルドして「docker.exe」を作成する方法です。こちらは、本連載第31回の記事内で紹介した方法になります。

Boot2Docker=Docker Client for Windowsではありませんよ!

 Dockerは初めてという方がDocker Client for Windowsを試そうという場合、多くの人が以下のドキュメントを参照して、「Boot2Docker」をインストールすると思います(画面1)。そして、試した人の中には、うまくできなかったという人もいるでしょう。

画面1 画面1 64ビット版のWindows 8.1に「Boot2Docker」をインストールしているところ

 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)通信による接続を自動的にセットアップしてくれているのです。

画面2 画面2 Boot2DockerはローカルのDocker Engineを操作している気分で使えるが、実際にはOracle VirtualBoxの仮想マシンで動くLinux上のDocker Engineと対話している

 Boot2Dockerで使用するDockerクライアントは、Docker Client for Windowsに違いありませんが、Docker EngineはLinuxで動いているということにご注意ください(画面3)。

画面3 画面3 Boot2DockerのDocker Engineは、Oracle VirtualBoxのLinux仮想マシンで動いている

 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)。

画面4 画面4 Boot2DockerのDocker Client for Windows(docker.exe)は、単体でも利用できる。Windowsネイティブであるため、コマンドプロンプトやWindows PowerShellからも実行可能

Boot2Dockerで試すなら、VirtualBoxのシステム要件と他の仮想化ソフトとの競合に注意!

 Boot2DockerのDocker Engineは、Oracle VirtualBoxの仮想マシン環境で動作するということは、Oracle VirtualBoxが動かない環境ではBoot2Dockerが動作しないということです。

 Boot2DockerはWindows 7 Service Pack(SP)1およびWindows 8でテストされているそうですが、32ビット環境にはインストールできません(画面5)。また、プロセッサーがハードウエア仮想化支援機能(Intel VTやAMD-V)をサポートしている必要があります。

画面5 画面5 Boot2Dockerは32ビットWindowsにインストールすることができない

 Oracle VirtualBox以外の仮想化ソフトウエアを使用している場合は、それらが競合する可能性もあります。例えば、Windows 8/8.1のクライアントHyper-VとOracle VirtualBoxは同時に実行できません。

 そのため、クライアントHyper-Vが動作している環境では、Boot2DockerはOracle VirtualBoxのLinux仮想マシンを起動できません(画面6)。Oracle VirtualBoxのインストールにより、既存の仮想化ソフトウエアの実行に影響することもあるので、仮想化ソフトウエアを利用している場合は、安易にBoot2Dockerを導入するべきではありません。

画面6 画面6 Windows 8.1のクライアントHyper-Vが有効な環境では、Oracle VirtualBoxの仮想マシンは起動できない

 また、Boot2DockerはOracle VirtualBoxに4プロセッサー、2GBメモリの仮想マシンを作成します。PCに十分なリソースがないと、Boot2Dockerの実行でPCのパフォーマンスが大きく劣化することもあるので注意してください。

Docker Client for Windowsだけをインストールするには

 本連載第31回で説明したようなAzure仮想マシン上のDockerをWindowsからリモートで管理したい場合、あるいはすでにあるDocker EngineをWindowsからリモートで管理したいという場合は、Docker Client for Windowsだけをインストールする方がトラブルは少ないでしょう。

 Windows向けのパッケージ管理ツール「Chocolatey」を使用すると、Docker Client for Windowsの最新バイナリだけを、数行のコマンドラインでインストールすることができます(画面7)。

画面7 画面7 「Chocolatey」を使用したDocker Client for Windowsのインストール。Docker Client for Windowsのバイナリだけを簡単にインストールできる

 また、本連載第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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。