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) 所組成。 安裝所有項目的最簡單方式是在快速入門指南中,其可協助您設定並執行您的第一個容器。

如需使用指令碼進行安裝,請參閱使用指令碼安裝 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
}

您只需要將所需的設定變更新增至設定檔。 例如,下列範例將 Docker 引擎設定為接受連接埠 2375 上的連入連線。 所有其他組態選項都會使用預設值。

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

下列範例同樣會設定 Docker 精靈將映像和容器保留在的替代路徑中。 如果沒有指定,則預設值為 c:\programdata\docker

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

下列範例會將 Docker 精靈設定為只接受透過連接埠 2376 連接的安全連線。

{
    "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 服務上設定。 在命令提示字元中執行下列命令 (cmd.exe 不是 PowerShell):

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 組態。 這些可以合併成單一組態檔。

建立預設網路

若要設定 Docker 引擎使其不建立預設 NAT 網路,請使用下列設定。

{
    "bridge" : "none"
}

如需詳細資訊,請參閱 管理 Docker 網路

設定 Docker 安全性群組

當您已登入 Docker 主機並在本機執行 Docker 命令時,會透過具名管道執行這些命令。 根據預設,只有 管理員 istrators 群組的成員可以透過命名管道存取 Docker 引擎。 若要指定具有此存取權的安全組,請使用 group 旗標。

{
    "group" : "docker"
}

Proxy 組態

若要設定 和 docker pulldocker search Proxy 資訊,請建立名稱HTTP_PROXY為 或HTTPS_PROXY的 Windows 環境變數,以及 Proxy 資訊的值。 您可以使用類似下列的命令,使用 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 之前,請確定您的系統上沒有正在執行的容器。

執行下列 Cmdlet 來檢查執行中的容器:

# 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。 您可以執行下列 Cmdlet 來完成這項操作:

docker system prune --volumes --all

卸載 Docker

接下來,您必須實際解除安裝 Docker。

解除安裝 Windows 10 上的 Docker

  • 移至 Windows 10 電腦上的 [設定]> [應用程式]
  • 在 [應用程式與功能] 下,尋找適用於 Windows 的 Docker
  • 移至 [適用於 Windows 的 Docker]> [解除安裝]

解除安裝 Windows Server 2016 上的 Docker:

從提升權限的 PowerShell 工作階段中,使用 Uninstall-PackageUninstall-Module Cmdlet,從您的系統移除 Docker 模組及其對應的套件管理提供者,如下列範例所示:

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

提示

您可以使用 PS C:\> Get-PackageProvider -Name *Docker*,尋找您用來安裝 Docker 的套件提供者

清理 Docker 資料與系統元件

解除安裝 Docker 之後,您必須移除 Docker 的預設網路,如此一來,在 Docker 移除之後,它們的設定就不會保留在您的系統上。 您可以執行下列 Cmdlet 來完成這項操作:

Get-HNSNetwork | Remove-HNSNetwork

若要在 Windows Server 2016 上移除 Docker 的預設網路。

Get-ContainerNetwork | Remove-ContainerNetwork

執行下列 Cmdlet,從您的系統移除 Docker 的程式資料:

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

您也可以移除與 Windows 上的 Docker/容器相關的 Windows 選用功能。

這包含「容器」功能,在已安裝 Docker 的任何 Windows 10 或 Windows Server 2016 上,此功能會自動啟用。 它也可能包含 「Hyper-V」功能,此功能會在安裝 Docker 時自動在 Windows 10 上啟用,但必須在 Windows Server 2016 上明確啟用。

重要

Hyper-V 功能不只會啟用容器,也是普遍的虛擬化功能。 停用 Hyper-V 功能之前,請確定系統上沒有任何其他虛擬化元件需要 Hyper-V。

移除 Windows 10 上的 Windows 功能:

  • 移至 [控制台]> [程式]> [程式和功能]> [開啟或關閉 Windows 功能]
  • 找出您想要停用的功能名稱,在此案例中是 [容器] 以及 (選擇性) [Hyper-V]
  • 取消選取您想要停用的功能名稱旁邊的方塊。
  • 選取 [確定]

移除 Windows Server 2016 上的 Windows 功能:

從提升權限的 PowerShell 工作階段,使用下列 Cmdlet 來停用 [容器] 以及 (選擇性) [Hyper-V] 系統功能:

Remove-WindowsFeature Containers
Remove-WindowsFeature Hyper-V

重新啟動系統

若要完成解除安裝和清除,請從提升權限的 PowerShell 工作階段執行下列 Cmdlet,以重新啟動您的系統:

Restart-Computer -Force