WSL2 預設不支援 systemd
,因此需要手動啟動 Docker Daemon。在 WSL2 上執行 Docker 的方法可以參考以下步驟:
1. 啟動 Docker Daemon
在 WSL2 上,你需要手動啟動 dockerd
(Docker Daemon)。以下是具體步驟:
安裝必要套件:
確保你已安裝 docker.io
和 docker-ce
。
sudo apt update
sudo apt install -y docker.io
啟動 Docker Daemon:
手動執行以下指令啟動 Docker Daemon:
sudo dockerd
如果遇到 Cannot connect to the Docker daemon
問題,嘗試指定使用套接字:
sudo dockerd -H unix:///var/run/docker.sock
2. 自動啟動 Docker Daemon
由於 systemd
無法自動管理服務,可以使用以下方法實現 Docker Daemon 自動啟動:
方法 1:使用簡單的 Shell 腳本
創建一個腳本來啟動 dockerd
,例如:
nano ~/start-docker.sh
腳本內容如下:
#!/bin/bash
sudo dockerd -H unix:///var/run/docker.sock
儲存後,賦予執行權限:
chmod +x ~/start-docker.sh
每次啟動 WSL 時執行該腳本即可啟動 Docker Daemon:
./start-docker.sh
方法 2:使用 .bashrc
啟動
將啟動指令加入到 .bashrc
中,這樣每次進入 WSL 時會自動啟動 Docker:
echo "sudo dockerd -H unix:///var/run/docker.sock &" >> ~/.bashrc
3. 測試 Docker
在啟動 Daemon 後,執行以下指令測試 Docker 是否正常運行:
docker run hello-world
4. 使用 Docker GUI 工具(選擇性)
如果需要從 Windows 端管理 Docker,請設定 DOCKER_HOST
環境變數,將指令導向 WSL 的 Docker:
找到 WSL 的 IP 地址:
ip addr | grep inet
啟動 dockerd
時指定 TCP 通訊:
sudo dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
在 Windows 中設置環境變數:
$Env:DOCKER_HOST="tcp://<WSL_IP>:2375"
5. 啟用 systemd(可選方案)
如果需要啟用 systemd
,可以進行如下配置:
修改 WSL 發行版的設定檔:
編輯 /etc/wsl.conf
,加入以下內容:
[boot]
systemd=true
重新啟動 WSL:
wsl --shutdown
wsl
確認 systemd
已啟動:
systemctl list-units
然後你就可以使用 systemctl start docker
啟動 Docker。
這樣配置後,WSL2 就可以在不依賴 Docker Desktop 的情況下運行 Docker。