原文是保哥的如何移除 Docker Desktop 並在 Windows 與 WSL 2 改安裝 Docker Engine,
因為每次重灌OS又要設定,求人不如求己,針對自己的環境,用自己的筆觸記錄下來。
移除Docker Desktop on Windows
在Windows應用程式移除Docker Desktop on Windows。
在WSL2移除以下兩個符號連結檔案。
rm -f ~/.docker/contexts ~/.docker/features.json
在WSL2刪除所有cli-plugins檔案。
sudo rm /usr/local/lib/docker/cli-plugins/docker-*
在Windows重啟WSL2服務。
wsl.exe --shutdown
在Windows升級WSL2。
wsl --update在WSL2安裝Docker/Docker Compose
在WSL2下載Docker/Docker Compose安裝腳本。
curl -fsSL https://get.docker.com -o get-docker.sh
執行安裝腳本。
sudo sh get-docker.sh
安裝腳本get-docker.sh有一段邏輯,會建議你按Ctrl+C中止此腳本並安裝Docker Desktop on Windows,等20秒即可跳過繼續執行。
if is_wsl; then
echo
echo "WSL DETECTED: We recommend using Docker /Desktop for Windows."
echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop/"
echo
cat >&2 <<-'EOF'
You may press Ctrl+C now to abort this script.
EOF
( set -x; sleep 20 )
fi
將登入WSL2帳號加入docker群組。
sudo usermod -aG docker $USER透過WSL2的systemd服務啟動Docker
安裝腳本get-docker.sh會安裝Docker服務(docker.service),可以用以下指令確認。
systemctl status docker.service
讓dockerd同時監聽Unix socket file與TCP連線
可在Windows下管理WSL2的Docker,
在Windows的VSCode也能直接連到Docker進行管理。
讓dockerd同時監聽Unix與TCP
在WSL2的/etc/docker/daemon.json加入:
{
......
"hosts": [
"unix:///var/run/docker.sock",
"tcp://127.0.0.1:2375"
]
......
}
編輯systemd服務設定(Docker服務)
編輯/etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
套用變更
sudo systemctl daemon-reload
sudo systemctl restart docker
驗證,看到 LISTEN 狀態代表成功。
$ ss -lntp | grep 2375
LISTEN 0 4096 *:2375 *:*在Windows命令提示字元下也能使用docker指令
在Windows安裝docker-cli和docker compose
winget install --id Docker.DockerCLI && winget install --id Docker.DockerCompose
設定環境變數
setx DOCKER_HOST 127.0.0.1:2375
讓Windows的VSCode的Container Tools也能管理Docker
在設定檔的JSON加入:
{
......
"containers.environment": {
"DOCKER_HOST": "tcp://127.0.0.1:2375"
}
......
}visual studio code, windows, wsl2 — 2026年9月22日
Made with ❤ and at Taiwan.