LoginSignup
35
33

More than 3 years have passed since last update.

Windows Server で Docker EE を動かすまでの流れ

Last updated at Posted at 2019-01-08

概要

Windows Server ではクライアントOSである Windows 10 などのように Docker CE のインストーラーからインストールして利用することができません。インストール自体は問題なくできますが docker の起動時にエラーが発生して正しく動作しません。

Windows Server で docker を動かすためには Docker EE を利用する必要がありますが、いくつか手順が必要なため本記事にまとめておきます。

前提条件

Windows Server, version 1709 以降または Windows Server 2019 が必要です。

手順

(1) Hyper-V のインストール

PowerShell コマンドから Hyper-V をインストールします。
インストールに成功すると SuccessTrue となります。

> PowerShell Install-WindowsFeature hyper-v

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    Yes            SuccessRest... {Hyper-V}
警告: インストール処理を完了するには、このサーバーを再起動する必要があります。

(2) コンテナーのインストール

Windows のコンテナー機能をインストールします。
Hyper-V と同じようにインストールに成功すると SuccessTrue となります。

> PowerShell Install-WindowsFeature containers

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    Yes            SuccessRest... {コンテナー}
警告: インストール処理を完了するには、このサーバーを再起動する必要があります。

(3) マシンの再起動

インストール処理を完了させるため PowerShell コマンドからマシンを再起動します。

> PowerShell Restart-Computer -Force

(4) プロバイダーのインストール

Docker EE をインストールするためのプロバイダーをインストールします。
インストールの確認が表示されたら y キーを入力します。

> PowerShell Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\Administrator\AppData\Local\PackageManagement\ProviderAssemblies'
に配置する必要があります。'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet
プロバイダーをインストールすることもできます。今すぐ PowerShellGet で NuGet
プロバイダーをインストールしてインポートしますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y

(5) Docker EE のインストール

Docker EE をインストールします。
インストールの確認が表示されたら y キーを入力します。

> PowerShell Install-Package -Name Docker -ProviderName DockerMsftProvider -Force

パッケージは、信頼済みとマークされていないパッケージ ソースから取得されています。
'DockerDefault' からソフトウェアをアンインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

Name                           Version          Source           Summary
----                           -------          ------           -------
Docker                         18.09.0          DockerDefault    Contains Docker EE for use with Windows Server.

(6) LinuxKit のインストール

Docker EE のインストールは完了していますが docker で Linux コンテナを動かしたい場合は LinuxKit のインストールも行う必要があります。

LinuxKit から release.zip をダウンロードし、以下のフォルダを作成して中身を展開します。

C:\Program Files\Linux Containers

(7) Docker Compose のインストール

Docker CE には Docker Compose が付属していましたが、Docker EE には付属していないので手動でインストールします。

Docker Compose から docker-compose-Windows-x86_64.exe をダウンロードし、ファイル名を docker-compose.exe へ変更してから以下のように配置します。

C:\Program Files\Docker\docker-compose.exe

(8) マシンの再起動

PowerShell コマンドからマシンを再起動します。

> PowerShell Restart-Computer -Force

(9) Experimental 機能の有効化

Linux コンテナのサポートは現時点では Experimental 扱いなので、デーモン設定ファイルから Experimental 機能の有効化を行います。

以下のファイルを新規作成します。

C:\ProgramData\docker\config\daemon.json

ファイルの内容は以下のように記載して上書き保存します。

{
  "experimental": true
}

(10) マシンの再起動

デーモン設定ファイルを読み込ませるため PowerShell コマンドからマシンを再起動します。

> PowerShell Restart-Computer -Force

以上で Docker EE が利用可能となります。

動作確認

(1) Docker EE のバージョンの表示

docker version コマンドを実行してバージョンが表示されることを確認します。
Server 側の Experimentaltrue となっていることも確認します。

> docker version
Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.3
 Git commit:        33a45cd0a2
 Built:             unknown-buildtime
 OS/Arch:           windows/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.24)
  Go version:       go1.10.3
  Git commit:       33a45cd0a2
  Built:            11/07/2018 00:24:12
  OS/Arch:          windows/amd64
  Experimental:     true

(2) Docker Compose のバージョンの表示

docker-compose version コマンドを実行してバージョンが表示されることを確認します。

> docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018

(3) Linux コンテナの動作確認

Docker EE で Linux コンテナが動作することを確認します。

まずは Alpine Linux のイメージを pull します。

> docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
cd784148e348: Pull complete
Digest: sha256:46e71df1e5191ab8b8034c5189e325258ec44ea739bba1e5645cff83c9048ff1
Status: Downloaded newer image for alpine:latest

イメージの一覧を確認します。

> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              3f53bb00af94        2 weeks ago         6.82MB

コンテナを生成して Alpine Linux に入れることを確認します。

> docker run --rm -it alpine /bin/ash
/ #

Docker EE のバージョンアップ

はじめにプロバイダーを更新します。

> PowerShell Update-Module DockerMsftProvider

Docker EE を任意のバージョンへバージョンアップします。
以下のコマンドでは 19.03 へバージョンアップします。

> PowerShell Install-Package -Name docker -ProviderName DockerMsftProvider -RequiredVersion 19.03 -Update -Force

35
33
1

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
35
33