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 pull
的 docker 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-Package 和 Uninstall-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