Windows

注釈

今回の Docker のリリース(1.9)から、Boot2Docker コマンドライン・ツールに換わり、Docker Toolbox (ツールボックス)が採用されています。Docker Toolbox を使い、Docker Machine のような Docker ツールをインストールします。

Docker を Docker Toolbox を使いインストールします。Docker Toolbox には次の Docker ツールが含まれます。

  • Docker Machine を動かす docker-machine バイナリ
  • Docker エンジンを動かす docker バイナリ
  • Docker Compose を動かす docker-compose バイナリ
  • Docker GUI の Kitematic (カイトマティック)
  • Oracle VM VirtualBox(バーチャルボックス)

Docker デーモンは Linux 固有の kernel 機能を使う為、Windows 上で Docker をネイティブに実行できません。そのかわり docker-machine を使い、仮想マシン(VM)の作成と接続が可能です。このマシンは Linuxの仮想マシンであり、自分の Windows 上の Docker ホストとなります。

Docker 仮想マシンとは、Docker デーモンを Windows 上で動かすための軽量な Linux 仮想マシンです。VirtualBox は仮想マシンを RAM から実行し、24MB 程度をダウンロードし、起動まで約5秒です。

動作条件

Docker を実行するには、Windows 7 以上で動作する PC が必要です。Windows のバージョンは次のようにして確認します。

  1. Windows のスタートメニューを右クリックし、「システム」を選びます(あるいは、コントロールパネルからシステムを開きます)。
Windows バージョン

サポートされていない Windows のバージョンだった場合、Docker を試すには OS のアップグレードをご検討ください。

  1. CPU が 仮装化技術 をサポートしていること、BIOS の設定で仮想化をサポートしていること、Windows によって認識されていることを確認します。

Windows 8, 8.1, 10 の場合

「スタート」から「タスクマネージャ」を選びます。Windows 10 の場合はクリックして詳細が出ます。「パフォーマンス」タブを探し、「CPU」の仮想化の項目が有効になっているのを確認します。

仮想化がシステム上で有効でなければ、PC メーカーの指示(マニュアル等)に従って有効化してください。

Windows 7 の場合

Microsoft® のハードウェア支援による仮想化の検出ツール を実行し、画面の指示に従います。

注釈

Docker が動くホストを持っており、Docker Toolbox のインストールをしたくない場合は、非公式 Windows パッケージ・マネージャの Chocolately を使い docker.exe をインストールできます。詳細な情報は Chocolatey にある Docker パッケージ をご覧ください。

インストール前に重要な概念を学ぶ

Linux 上への Docker のインストールにおいて、自分の物理マシンとはローカルホストと Docker ホストの両方を意味します。ネットワークでは、ローカルホストは自分のコンピュータを意味します。Docker ホストはコンテナを実行するためのコンピュータです。

典型的な Linux インストールは、自分のローカルホスト上で直接 Docker クライアント、Docker デーモン、そして、あらゆるコンテナを動かします。つまり、Docker コンテナは localhost:80000.0.0.0:8376 のような一般的なポートを割り当てて使います。

Linux アーキテクチャ図

Windows のインストールでは、Linux 仮想マシンの中に docker デーモンを動かします。Windows の Docker クライアントを使い、Docker ホストの仮想マシンと通信します。このホストの中でコンテナは実行されます。

Windows のアーキテクチャ図

Windows では、Docker ホストのアドレスは Linux VM のアドレスです。仮想マシンを docker-machine で開始すると、IP アドレスが割り当てられます。コンテナを起動すると、コンテナ上のポートは仮想マシン上のポートに割り当てられます。このページの練習を通して、この仕組みに慣れましょう。

インストール

VirtualBox を実行中の場合、インストーラを実行する前に停止する必要があります。

  1. Docker Toolbox のページに移動します。
  1. インストーラのリンクをクリックします。
  1. インストーラーをダブルクリックして、Docker Toolbox をインストールします。

インストーラーは「Setup - Docker Toolbox」ダイアログを開きます。

Docker Toolbox のインストール
  1. 「Next」を押して Toolbox をインストールします。

インストーラは標準インストールに対するカスタマイズ用オプションを提供しています。デフォルトは、Docker Toolbox の標準インストールです。

  • Docker ツールのバイナリを C:\Program Files\Docker Toolbox にインストールします。
  • VirtualBox をインストールします。あるいは、インストール済みであればバージョンアップを行います。
  • プログラムのショートカットに Docker Inc. フォルダを追加します。
  • 環境変数 PATH を更新します。
  • Docker Quickstart Terminal と Kitematic のアイコンをデスクトップに追加します。

ここでのインストールは、デフォルト設定を想定しています。

  1. 「Next」を「Ready to Install」ページが出るまで押します。

システム・プロンプトがパスワード入力を促します。

インストール確認画面
  1. 「Install」を押して、インストールを継続します。

完了すると、インストーラーは一般的な作業に関する表示を行います。

すべて完了です。
  1. 「Finish」をクリックすると終了します。

Docker コンテナの実行

Docker コンテナを実行するには、次のようにします。

  • 新しい Docker 仮想マシンを作成(あるいは、既存のものを開始)
  • 環境を新しい仮想マシンに切り替え
  • docker クライアントを使ってコンテナの作成・読み込み・管理

マシンを作成してしまえば、好きなときに再利用できます。VirtualBox の仮想マシンのように、用途に応じた設定で使い分けます。

インストールしたツールを使うには2つの方法があります。Docker Quickstart Terminal (クイックスタート・ターミナル)を使うか、 シェル で操作します。

Docker Quickstart Terminal から使う

  1. デスクトップの「Docker Quickstart Terminal」アイコンをさがし、ダブルクリックで開きます。

アプリケーションは次の動作をします:

  • ターミナル用のウインドウを開く
  • default 仮想マシンが無ければ作成し、仮想マシンを起動
  • ターミナルの環境がこの仮想マシンを示す
  1. セットアップの成功を確認するため、 hello-world コンテナを実行します。
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete
hello-world:latest: The image you are pulling has been verified.
Important: image verification is a tech preview feature and should not be
relied on to provide security.
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.

このメッセージ表示にあたり、Docker は次のステップを踏んでいます。

  1. Docker クライアントは Docker デーモンに接続します。
  1. Docker デーモンは「hello-world」イメージを Docker Hub から取得します(まだローカルにイメージがないのを想定しています)。
  1. そのイメージを使い、Docker デーモンは新しいコンテナを作成します。コンテナを実行すると、先ほど見たような出力をします。
  1. Docker デーモンは Docker クライアントに出力を流し込み、自分のターミナル上に送ります。

では、期待を持ちながら Ubuntu コンテナを実行しましょう。

$ docker run -it ubuntu bash

更なる例や考え方については、 ユーザガイド をご覧ください。

Windows コマンドプロンプト(cmd.exe)でDockerを使う

  1. コマンドプロンプト(cmd.exe)を起動します。

docker-machine コマンドは環境変数 PATH の中にある ssh.exe を必要とします。この .exe は MsysGit の bin フォルダにあります。

  1. 環境変数 %PATH% に追加するコマンドを実行します。
set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"
  1. 新しい Docker 仮想マシンを作成します。
$ docker-machine create --driver virtualbox my-default
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env my-default

ここでは VirtualBox に新しい default 仮想マシンを作成します。

また、このコマンドはマシンの設定を C:\USERS\USERNAME\.docker\machine\machines `` ディレクトリに作成します。必要なのは、実行時に ``create コマンドを一度実行するだけです。あとは、 docker-machine を使って開始、停止、問い合わせできます。それだけでなく、コマンドライン上から仮想マシンを管理します。

  1. 利用可能なマシン一覧を表示します。
C:\Users\mary> docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
my-default        *        virtualbox   Running   tcp://192.168.99.101:2376

廃止予定の Boot2Docker アプリケーションをインストールしているか、あるいは Docker Quickstart Terminal を実行している場合は dev 仮想マシンが同様に表示されます。

  1. 新しい仮想マシンに対応する環境変数を取得します。
C:\Users\mary> docker-machine env --shell cmd my-default
  1. シェルから my-default マシンに接続します。
C:\Users\mary> eval "$(docker-machine env my-default)"
  1. hello-world コンテナを実行し、セットアップが正常かどうか確認します。
C:\Users\mary> docker run hello-world

PowerShell で Docker を使う

  1. Windows の PowerShell ウインドウを開きます。
  1. 環境変数 PATH に ssh.exe を追加します。
PS C:\Users\mary> $Env:Path = "${Env:Path};c:\Program Files (x86)\Git\bin"
  1. 新しい Docker 仮想マシンを作成します。
PS C:\Users\mary> docker-machine create --driver virtualbox my-default
  1. 利用可能なマシン一覧を表示します。
C:\Users\mary> docker-machine ls
NAME                ACTIVE   DRIVER       STATE     URL                         SWARM
my-default        *        virtualbox   Running   tcp://192.168.99.101:2376

廃止予定の Boot2Docker アプリケーションをインストールしているか、あるいは Docker Quickstart Terminal を実行している場合は dev 仮想マシンが同様に表示されます。

  1. 新しい仮想マシンに対応する環境変数を取得します。
C:\Users\mary> docker-machine env --shell cmd my-default
  1. シェルから my-default マシンに接続します。
C:\Users\mary> eval "$(docker-machine env my-default)"
  1. hello-world コンテナを実行し、セットアップが正常かどうか確認します。

    C:Usersmary> docker run hello-world

Toolbox のインストールを学ぶ

Toolbox は Docker エンジンのバイナリを C:\Program Files\Docker Toolbox にインストールします。Docker Quickstart Terminal を使うか、 default 仮想マシンを(Docker Machine で)手動で作成すると、Docker Machine はシステム上の C:\USERS\USERNAME\.docker\machine\machines\default ディレクトリを更新します。このディレクトリに、仮想マシンに関する設定が置かれます。

Docker Machine を使い、システム上に複数の仮想マシンを作成できます。つまり、いくつも仮想マシンを作成すると、複数の仮想マシン用のディレクトリが作られます。仮想マシンを削除するには、 docker-machine rm <マシン名> コマンドを使います。

Boot2Docker からの移行

これまで Boot2Docker を使っていた場合は、既に Dockerの boot2docker-vm 仮想マシンがローカルシステム上に存在しています。Docker Machine で古い仮想マシンを管理する場合は、移行が必要です。

  1. ターミナルか、システム上の Docker CLI を開きます。
  2. 次のコマンドを実行します。
$ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm docker-vm
  1. docker-machine コマンドを使い、対話式に仮想マシンを移行します。

docker-machine サブコマンドは、boot2docker サブコマンドと若干の違いがあります。次の表は docker-machine サブコマンドとの互換性を比較したものです。

boot2docker docker-machine docker-machine の説明
init create 新しい docker ホストの作成
up start 停止しているマシンの起動
ssh ssh コマンドの実行やマシンとの双方向 ssh セッション
save 利用不可
down stop 実行中のマシンの停止
poweroff stop 実行中のマシンの停止
reset restart 実行中のマシンの再起動
config inspect マシン設定詳細の表示
status ls マシン一覧と状態の表示
info inspect マシンの詳細を表示
ip ip マシンの IP アドレスを表示
shellinit env シェルがマシンと対話するために必要なコマンドの表示
delete rm マシンの削除
download 利用不可
upgrade uppgrade マシン上の Docker クライアントを最新安定版に更新

Docker Toolbox のアップグレード

Docker Toolbox をアップグレードするには、 Docker Toolbox インストーラ をダウンロードし、再度実行します。

コンテナのポートをリダイレクト

もし興味があればですが、Docker デフォルト仮想マシンのユーザ名は docker であり、パスワードは tcuser です。最新バージョンの docker-machine はホスト・オンリー・ネットワークアダプタをセットアップます。これはコンテナのポートにアクセスするためです。

コンテナの公開ポートに接続したい場合、次のように実行します。

$ docker run --rm -i -t -p 80:80 nginx

それから、アクセスするには nginx サーバが使っている IP アドレスを確認します。

$ docker-machine ip

おそらく IP アドレスは 192.168.59.103 のようなものですが、VirtualBox の DHCP 実装により変わります。

CMD の代わりに PuTTY でログイン

Docker Machine は自分の %USERPROFILE%\.ssh ディレクトリに公開鍵と秘密鍵のペアを作成します。そのため、ログインのためには同じディレクトリにある秘密鍵を使う必要があります。秘密鍵を PuTTY が使う形式に変換する必要があります。 puttygen で変換できます。

  1. puttygen.exe を開き、(「File」->「Load」メニューから)秘密鍵を読み込みます(フィルタを All Files (*.*) に変更の必要があるかもしれません )。
%USERPROFILE%\.docker\machine\machines\<name_of_your_machine>\id_rsa
  1. 「Save Private Key」をクリックします。
  1. 保存したファイルを使い、 PuTTY で docker@127.0.0.1:2022 にログインします。

アンインストール

Docker Toolbox は Windows の標準手順でプログラムのダウンロードができます。この手順で docker-install.exe ファイルは削除できません。自分自身で削除する必要があります。

更に詳しく

Docker ユーザガイド を読み続けられます。 Kitematic GUI の使用に興味があれば、 Kitematic ユーザガイド をご覧ください。