在Windows 10和11上安裝Docker容器化平台有兩種方法。可以將其安裝為Windows的Docker桌面應用程序(使用內置的Hyper-V + Windows容器功能)或作為完整的Docker引擎安裝在Linux Windows子系統中的Linux發行版中(WSL2)。本指南將使您在不使用Docker桌面的情況下,在WSL環境中瀏覽Docker引擎的安裝和基本配置。
在WSL中使用Docker Engine的優勢:
- Docker桌面需要Windows 10/11的Pro或Enterprise Edition。 WSL中的Docker引擎甚至可以在Windows Home Editions上運行
- Windows的Docker桌面需要其他RAM和磁盤空間來運行Hyper-V虛擬機和其他Windows容器
- Docker Desktop適用於小型企業(最多250名員工),個人和非商業項目。在其他情況下,您需要購買付費訂閱。
假設您已經在Windows計算機上安裝了WSL2(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的警告。
將您的用戶添加到Docker組。這使您可以運行Docker命令,而無需提高特權sudo
或輸入密碼。
$ sudo usermod -aG docker $USER
驗證Docker Engine和Compose已成功安裝:
$ docker --version
$ docker compose version
現在,配置Docker守護程序以在WSL中自動啟動。 WSL目前完全支持Systemd(許多流行的Linux發行版使用的初始系統和服務經理)。檢查WSL Linux圖像中是否啟用了它:
$ cat /etc/wsl.conf
另請閱讀:
[boot] systemd=true
然後檢查SystemD用作Linux Init System:
$ stat /sbin/init
在這種情況下,SystemD用於初始化(因為/sbin/init是指向/lib/systemd/systemd)。
運行Docker Engine Service並啟用AutoStart:
$ sudo systemctl enable --now docker.service
$ systemctl status docker.service
如果由於某種原因未使用SystemD,則可以將其添加到WSL啟動中:
$ nano /etc/wsl.conf
[boot] command = "/usr/sbin/service docker start"
默認情況下,WSL2可以使用以下主機計算機資源:
- RAM的50%
- 交換文件的25%
- 100%CPU資源
如果要限制WSL2子系統對主機資源的使用,請創建一個文本文件%UserProfile%.wslconfig
在當前用戶的個人資料中。該文件可用於為所有WSL發行版設置全局限制。例如,添加以下內容:
[wsl2] memory=8GB processors=4 swap=2GB
從Windows命令提示重新啟動WSL映像:
wsl --shutdown
在WSL中運行一個測試碼頭容器:
$ docker run hello-world
Docker Engine將下載並運行hello-world
Docker Hub的演示容器。
要從WSL2獲得最佳性能,請將所有Docker容器文件存儲在WSL中,而不是從Windows主機重定向的目錄中(例如 /MNT /C)。
現代Linux版本(Ubuntu 22.04,Debian 10+)使用Nftables而不是用於管理內置防火牆的iptables。 Linux內核5.8或更高版本WSL中的本機Nftables支持所需。要使網絡與舊內核正常工作,請啟用與iPtables的兼容性:
$ sudo update-alternatives --config iptables
按1
選擇iptables-segacy模式。
現在,您可以通過Windows命令提示符在WSL中運行Docker命令。
在任何Docker命令之前,您必須指定WSL。例如,列出可用的Docker映像:
wsl docker images
現在,您可以在Windows機器上開發並運行Docker容器。