Windows 上の Docker エンジン

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

Docker エンジンとクライアントは Windows に含まれていないため、個別にインポートして構成する必要があります。 また、Docker エンジンは多くのカスタム構成に対応できます。 たとえば、デーモンで受信要求を受け入れる方法、既定のネットワークキング オプション、デバッグ/ログの設定の構成などです。 Windows でこのような構成を指定するには、構成ファイルまたは Windows サービス コントロール マネージャーを使用します。 このドキュメントでは、Docker エンジンのインストールおよび構成方法について説明します。また、一般的に使用される構成例も紹介します。

Docker のインストール

Docker は Windows コンテナーで使用するために必要です。 Docker は、Docker エンジン (dockerd.exe) と Docker クライアント (docker.exe) で構成されます。 すべてをインストールするための最も簡単な方法は、クイックスタート ガイドを参照してください。このガイドは、すべての設定と最初のコンテナーの実行に役立ちます。

スクリプト化したインストールについては、「Use a script to install Docker EE」 (スクリプトを使用して Docker EE をインストールする) をご覧ください。

Docker を使用する前に、コンテナー イメージをインストールする必要があります。 詳細については、コンテナーの基本イメージに関するドキュメントを参照してください。

構成ファイルを使用して Docker を構成する

Windows で Docker エンジンを構成するには、構成ファイルを使用する方法がお勧めです。 構成ファイルは、'C:\ProgramData\Docker\config\daemon.json' にあります。 このファイルがまだ存在しない場合は、作成できます。

注意

使用可能なすべての Docker 構成オプションが Windows 上の Docker に適用されるわけではありません。 次の例では、適用する構成オプションを示しています。 Docker エンジン構成の詳細なについては、Docker デーモン構成ファイルをご覧ください。

{
    "authorization-plugins": [],
    "dns": [],
    "dns-opts": [],
    "dns-search": [],
    "exec-opts": [],
    "storage-driver": "",
    "storage-opts": [],
    "labels": [],
    "log-driver": "",
    "mtu": 0,
    "pidfile": "",
    "data-root": "",
    "cluster-store": "",
    "cluster-advertise": "",
    "debug": true,
    "hosts": [],
    "log-level": "",
    "tlsverify": true,
    "tlscacert": "",
    "tlscert": "",
    "tlskey": "",
    "group": "",
    "default-ulimits": {},
    "bridge": "",
    "fixed-cidr": "",
    "raw-logs": false,
    "registry-mirrors": [],
    "insecure-registries": [],
    "disable-legacy-registry": false
}

目的の構成の変更を構成ファイルに追加するだけです。 たとえば、次のサンプルでは、ポート 2375 で受信接続を受け入れるように Docker エンジンを構成しています。 その他のすべての構成オプションには、既定値が使用されます。

{
    "hosts": ["tcp://0.0.0.0:2375"]
}

同様に、次のサンプルでは、代替パスにイメージとコンテナーを保持するように Docker デーモンが構成されます。 指定されていない場合は、既定値は c:\programdata\docker です。

{   
    "data-root": "d:\\docker"
}

このサンプルでは、セキュリティで保護された接続をポート 2376 でのみ受け入れるように Docker デーモンを構成しています。

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem",
}

Docker サービスで Docker を構成する

sc config を使用して Docker サービスを変更することで、Docker エンジンを構成することもできます。 この方法の場合、Docker エンジンのフラグは Docker サービスに直接設定されます。 コマンド プロンプト (PowerShell ではなく cmd.exe) で、次のコマンドを実行します。

sc config docker binpath= "\"C:\Program Files\docker\dockerd.exe\" --run-service -H tcp://0.0.0.0:2375"

注意

daemon.json ファイルに "hosts": ["tcp://0.0.0.0:2375"] というエントリが既に含まれている場合は、このコマンドを実行する必要はありません。

一般的な構成

次に、一般的な Docker 構成の構成ファイル例を示します。 これらの構成を 1 つの構成ファイルにまとめることができます。

既定のネットワークの作成

既定の NAT ネットワークが作成されないように Docker エンジンを構成するには、次の構成を使用します。

{
    "bridge" : "none"
}

詳細については、「コンテナーのネットワーク」を参照してください。

Docker セキュリティ グループの設定

Docker ホストにログインし、Docker コマンドをローカルで実行すると、名前付きパイプ経由でこれらのコマンドが実行されます。 既定では、Administrators グループのメンバーのみが、名前付きパイプ経由で Docker エンジンにアクセスできます。 このアクセス権を持つセキュリティ グループを指定するには、group フラグを使用します。

{
    "group" : "docker"
}

プロキシの構成

docker searchdocker pull のプロキシ情報を設定するには、HTTP_PROXY または HTTPS_PROXY という名前と、プロキシ情報の値を使用して Windows 環境変数を作成します。 そのためには、PowerShell で次のようなコマンドを実行します。

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://username:password@proxy:port/", [EnvironmentVariableTarget]::Machine)

変数が設定されたら、Docker サービスを再起動します。

Restart-Service docker

詳細については、Docker.com の Windows 構成ファイルをご覧ください。

Docker をアンインストールする方法

このセクションでは、Docker をアンインストールし、Windows 10 または Windows Server 2016 のシステムから Docker システム コンポーネントの完全クリーンアップを行う方法について説明します。

注意

以下の手順のコマンドはすべて、管理者特権による PowerShell セッションで実行する必要があります。

お使いのシステムで Docker 削除の準備を行う

Docker をアンインストールする前に、コンテナーがシステム上で実行されていないことを確認してください。

次のコマンドレットを実行して、実行中のコンテナーを確認します。

# Leave swarm mode (this will automatically stop and remove services and overlay networks)
docker swarm leave --force

# Stop all running containers
docker ps --quiet | ForEach-Object {docker stop $_}

また、Docker を削除する前に、お使いのシステムからすべてのコンテナー、コンテナー イメージ、ネットワーク、およびボリュームを削除するようお勧めします。 これを行うには、次のコマンドレットを使用します。

docker system prune --volumes --all

Docker のアンインストール

次に、Docker を実際にアンインストールする必要があります。

Windows 10 で Docker をアンインストールするには

  • Windows 10 のコンピューターで、 [設定]>[アプリ] の順に移動します。
  • [アプリと機能] で、[Docker for Windows] を見つけます。
  • Docker for Windows>アンインストール にアクセスします

Windows Server 2016 で Docker をアンインストールするには:

次の例に示されるように、管理者特権による PowerShell セッションで、パッケージのアンインストール および モジュールのアンインストール コマンドレットを使用して、Docker モジュールおよび対応するパッケージ管理プロバイダーをシステムから削除します。

Uninstall-Package -Name docker -ProviderName DockerMsftProvider
Uninstall-Module -Name DockerMsftProvider

ヒント

Docker をインストールするために使用したパッケージ プロバイダーを見つけるには、PS C:\> Get-PackageProvider -Name *Docker* を使用します。

Docker のデータおよびシステム コンポーネントをクリーンアップする

Docker をアンインストールした後は、Docker の既定のネットワークを削除する必要があります。これにより、Docker が使用されなくなった後も、その構成がシステムに残りません。 これを行うには、次のコマンドレットを使用します。

Get-HNSNetwork | Remove-HNSNetwork

Windows Server 2016 で Docker の既定のネットワークを削除するには、次のようにします。

Get-ContainerNetwork | Remove-ContainerNetwork

次のコマンドレットを実行して、Docker のプログラム データをお使いのシステムから削除します。

Remove-Item "C:\ProgramData\Docker" -Recurse

Windows 上の Docker/コンテナーに関連付けられている Windows オプション機能も必要に応じて削除します。

これには少なくとも、Windows 10 または Windows Server 2016 で Docker をインストールすると自動的に有効になる "コンテナー" 機能が含まれます。 また、"Hyper-V" 機能も含まれる可能性があります。これは、Windows 10 では Docker のインストール時に自動的に有効になりますが、Windows Server 2016 では明示的に有効にする必要がある機能です。

重要

Hyper-V の機能には、単なるコンテナーを大幅に超える全般的な仮想化機能が含まれます。 Hyper-V 機能を無効にする前に、この機能を必要とするその他の仮想化コンポーネントがお使いのシステム上にないことを確認してください。

Windows 10 で Windows 機能を削除するには:

  • [コントロール パネル]>[プログラム]>[プログラムと機能]>[Windows の機能の有効化または無効化] に移動します。
  • 無効にする機能の名前または機能として、この場合は [コンテナー] および (必要に応じて) [Hyper-V] を見つけます。
  • 無効にする機能の名前の横にあるチェック ボックスをオフにします。
  • 「OK」 を選択します。

Windows Server 2016 で Windows 機能を削除するには:

管理者特権による PowerShell セッションで以下のコマンドレットを使用して、お使いのシステムから [コンテナー] および (必要に応じて) [Hyper-V] 機能を無効にします。

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V

システムを再起動する

アンインストールとクリーンアップを完了するには、管理者特権の PowerShell セッションから次のコマンドレットを実行して、お使いのシステムを再起動します。

Restart-Computer -Force