LoginSignup
13
14

More than 5 years have passed since last update.

Windows 版 Docker クライアントのインストールと Linux上の Docker デーモンへの接続

Last updated at Posted at 2015-08-17

概要

Windows 版の Docker クライアントを使ってみました。以下の手順をまとめてあります。

  • Windows 版 Docker クライアントを、 Windows 10 と Windows 8.1 にインストール
  • Windows 版 Docker クライアントから、 Linux 上の Docker デーモンを操作

Docker クライアントは Toolbox を使うと簡単にインストールできますが、今回は Docker クライアント単体でインストールしてみました。

環境は以下の通りです。Windows マシンはどこにあってもいいのですが、今回はてっとり早く Windows 10 を使いたかったので Microsoft Azure を使っています。Docker デーモンは、いつもの通り AWS EC2上です。
DockerEnv.png

また、Docker のバージョンは、デーモンとクライアントの双方で 1.8.1 を使っています。

Windows 版 Docker クライアントのインストール

Windows版 Dockerクライアントのインストールは、Chocolatey という Windows のパッケージ管理ツールを使って行います。Chocolatey は、Windows 上で apt-get や yum と似たようなパッケージ管理ができるツールです。

Windows 10 の場合

Chocolatey と Docker のインストール

最初に Chocolatey をインストールします。

まずは、PowerShell を「管理者として実行」により起動。そして、PowerShellの実行ポリシーを RemoteSigned に変更。

PS C:\> Set-ExecutionPolicy RemoteSigned

そして、Chocolatey をインストールする。

PS C:\> Get-PackageProvider -Name Chocolatey

The provider 'chocolatey v2.8.5.130' is not installed.
chocolatey may be manually downloaded from https://oneget.org/ChocolateyPrototype-2.8.5.130.exe and installed.
Would you like PackageManagement to automatically download and install 'chocolatey' now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

Name                     Version          DynamicOptions
----                     -------          --------------
Chocolatey               2.8.5.130        {SkipDependencies, ContinueOnFailure, ExcludeVersion, ForceX86...}

次に Docker クライアントをインストール。nuget をインストールするか聞かれるので Y を入力してインストールを行う。

PS C:\> Install-Package docker

The provider 'nuget v2.8.5.127' is not installed.
nuget may be manually downloaded from https://oneget.org/nuget-anycpu-2.8.5.127.exe and installed.
Would you like PackageManagement to automatically download and install 'nuget' now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

The package(s) come from a package source that is not marked as trusted.
Are you sure you want to install software from 'chocolatey'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

Name                           Version          Source           Summary
----                           -------          ------           -------
docker                         1.8.1            chocolatey       Docker is an open platform for developers and sysad...

Docker クライアントは C:\Chocolatey 以下にインストールされる。
Win10-DockerInstalled.PNG

ただしChocolatey の問題で、C:\Chocolatey\bin が環境変数の PATH に追加されないので、コントロールパネルから手動で追加する。
Win10-Path.PNG

docker コマンドの実行

Docker クライアントのインストールが完了したので、コマンドプロンプトを起動してdocker クライアントを実行する。
Win10-DockerVer.PNG

ちゃんとインストールされたことが確認できた。

Windows 8.1 の場合

Chocolatey と Docker のインストール

コマンドプロンプトを「管理者として実行」により起動して、以下のコマンドを実行。

C:\> @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

次に Docker をインストールする。

C:\> choco install docker

途中でスクリプトを実行するか聞かれるので「1) yes」を指定する。
Win8-Install.PNG

なお、PATH の設定は自動で行われるので、手動での設定は不要。

docker コマンドの実行

コマンドプロンプトから Dockerクライアントを実行してみる。
Win8-DockerVer.PNG

ちゃんとインストールされたことが確認できた。

Linux 上での Docker デーモンの起動

Dockerデーモンは、デフォルトでは unix:///var/run/docker.sock をリッスンして、ローカルの root ユーザーか docker グループのユーザーからしかアクセスできないようになっている。なので、外部のWindows から Docker デーモンに接続できるようにTCPポートをリッスンする必要がある(後述の「!!注意!!」を参照)。

まず、すでに Docker デーモンが起動していたら停止する。

sudo systemctl stop docker.service

次に外部から接続できるように Docker デーモンを起動。

$ sudo docker daemon -H tcp://0.0.0.0:5555 &

Docker 1.8 より前のバージョンを使っている場合は次のように実行。

$ sudo docker -d -H tcp://0.0.0.0:5555 &

最後に、検証環境が AWS EC2 なので、上記のポート(TCP 5555) を通すようにセキュリティグループを追加しておく。

Windows 版 Dockerクライアントから Dockerデーモンの操作

Docker デーモンのホストIP(EC2インスタンスのPublic IP)とポート(TCP 5555)を指定して、次のようにコマンドを実行する。

docker -H tcp://<ホストのIP>:<ホストのポート> images

Windows 10 からコンテナを起動してみる。
Win10-DockerCmd.PNG

Winodws 8.1 から同じ Docker デーモンに接続すると、(当たり前だが)作成されたコンテナが見える。
Win8-DockerPS.PNG

!!注意!!

今回は検証目的で外部から Docker デーモンに接続できるようにしているが、任意の人が Docker デーモンに接続できてしまうリスクがあるため、以下のような対策が必要。

  • Docker デーモン起動時に、TLSを使った認証を有効にする(ここを参照)
  • EC2 のセキュリティグループで、Dockerデーモンのホストに接続できるIPを制限する

参考サイト

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14