在不使用 Docker Desktop 的情況下開始在 Windows 上使用 Docker (WSL2)
在Windows 10和11上安裝Docker容器化平台有兩種方法。可以安裝為適用於 Windows 的 Docker 桌面應用程序(使用內置的 Hyper-V + Windows 容器功能),或作為完整的Docker引擎安裝在 Windows Subsystem for Linux (WSL2) 中運行的 Linux 發行版中。本指南將引導您在 WSL 環境中完成 Docker Engine 的安裝和基本配置,而無需使用 Docker Desktop。
在 WSL 中使用 Docker Engine 的優點:
- Docker Desktop 需要 Windows 10/11 專業版或企業版。 WSL 中的 Docker 引擎甚至可以在 Windows Home 版本上運行
- 適用於 Windows 的 Docker Desktop 需要額外的 RAM 和磁盤空間來運行 Hyper-V 虛擬機和額外的 Windows 容器
- Docker Desktop 對於小型企業(最多 250 名員工)、個人和非商業項目免費。在其他情況下,您需要購買付費訂閱。
假設您已在 Windows 計算機上安裝了 WSL2(適用於 Linux 的 Windows 子系統)環境,並使用可用的 Linux 映像之一(Ubuntu:22.04在此示例中)。列出可用的 WSL 發行版:
wsl --list
要設置默認 WSL 映像,請運行以下命令:
wsl --setdefault Ubuntu-24.04

確保您使用的是 WSL2:
wsl --version


如果沒有,請運行:
wsl --set-default-version 2
連接到 WSL 環境中的 Linux 映像:
wsl.exe
更新 Linux 發行版(本例中為 Ubuntu)中的軟件包:
$ sudo apt-get update && sudo apt-get upgrade -y
然後使用官方腳本在Linux上安裝Docker Engine:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
忽略有關在 WSL 環境中安裝 Docker 的警告。
另請閱讀:如何在不激活 Windows 的情況下從桌面刪除回收站


將您的用戶添加到 docker 組。這允許您運行 Docker 命令,而無需使用以下命令提升權限sudo或輸入密碼。
$ sudo usermod -aG docker $USER
驗證 Docker Engine 和 Compose 是否已成功安裝:
$ docker --version
$ docker compose version


現在將 Docker 守護進程配置為在 WSL 中自動啟動。 WSL目前完全支持系統(許多流行的 Linux 發行版使用的 init 系統和服務管理器)。檢查它是否在您的 WSL Linux 映像中啟用:
$ cat /etc/wsl.conf
[boot] systemd=true


然後檢查systemd是否被用作Linux init系統:
$ stat /sbin/init
在這種情況下,systemd 用於 init(因為/sbin/初始化是一個符號鏈接/lib/systemd/systemd)。


運行 Docker Engine 服務並啟用自動啟動:
$ sudo systemctl enable --now docker.service
$ systemctl status docker.service


如果由於某種原因未使用 systemd,您可以將其添加到 WSL 啟動中:
$ nano /etc/wsl.conf
[boot] command = "/usr/sbin/service docker start"
默認情況下,WSL2 可以使用以下主機資源:
- 50% 內存
- 交換文件的 25%
- 100% 的 CPU 資源
如果要限制 WSL2 子系統對主機資源的使用,請創建一個文本文件%UserProfile%.wslconfig在當前用戶的個人資料中。該文件可用於設置所有 WSL 發行版的全局限制。例如,添加以下內容:
[wsl2] memory=8GB processors=4 swap=2GB
從 Windows 命令提示符重新啟動 WSL 映像:
wsl --shutdown
在 WSL 中運行測試 Docker 容器:
$ docker run hello-world
Docker Engine 將下載並運行hello-world來自 Docker Hub 的演示容器。
為了從 WSL2 獲得最佳性能,請將所有 Docker 容器文件存儲在 WSL 中,而不是存儲在從 Windows 主機重定向的目錄中(例如 /mnt/c)。
現代 Linux 版本(Ubuntu 22.04、Debian 10+)使用nftables而不是 iptables 來管理內置防火牆。 WSL 中的本機 nftables 支持需要 Linux 內核 5.8 或更高版本。為了使網絡在舊內核上正常工作,請啟用與 iptables 的兼容性:
$ sudo update-alternatives --config iptables


按1選擇 iptables-legacy 模式。
現在,您可以從 Windows 命令提示符在 WSL 中運行 Docker 命令。
在任何 Docker 命令之前,您必須指定瓦斯爾。例如,列出可用的 Docker 鏡像:
wsl docker images


現在您可以在 Windows 計算機上開發和運行 Docker 容器。
