Debian WSL 2 安裝使用 Docker


Docker 作為目前程序員的必備技能,已經被廣泛使用。使用 WSL2 直接安裝運行社區版本 Docker ,比安裝 Docker Desktop 更加節省空間,且啟動速度更快。本文將介紹如何在 Debian WSL2 上安裝使用社區版 Docker。

安裝 Docker 其實主要關注幾個問題:1. 安裝源的國內鏡像使用。 2. Docker Image 倉儲的國內鏡像配置。 3. WSL2 啟動 Docker 時的兼容性設置。

安裝

Docker 的國內軟件源有很多,各大鏡像站都有,如:

http://mirrors.cloud.tencent.com/docker-ce / http://mirrors.aliyun.com/docker-ce / http://mirrors.ustc.edu.cn/docker-ce

安裝時照着官方文檔 Install Docker Engine on Debian 來操作就行了,只是將相關網站替換為鏡像網址。以阿里雲軟件源為例,安裝的命令行如下:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io  

WSL2 兼容性配置

執行了上述命令,你應該已經安裝完成了,可是執行 service docker start 應該是會報錯的,你還需進行一下兼容性設置。主要是創建 fstab 文件,以及設置 iptables 為 legacy 模式。以使 Docker 能夠在 WSL2 上正常啟動。

sudo apt install iptables
sudo touch /etc/fstab
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

此時你已經可以通過 root 權限使用 service docker start 啟動 Docker 服務,並正常使用。

權限設置

如果你的默認賬戶不是 root,如果想要不通過 sudo 使用 docker 命令,你還需要將用戶加入 docker 用戶組。

sudo usermod -aG docker $USER && newgrp docker

在 WSL2 中,docker 發布的服務端口可以正常映射到宿主機的 localhost 的相同端口上,和正常使用 Docker Desktop 一樣。

daemon.json 配置

Docker 鏡像倉儲國內訪問速度不佳,國內鏡像倉儲代理服務有很多,阿里雲,daocloud,中科大,網易都有。這里列幾個:

https://docker.mirrors.ustc.edu.cn
http://f1361db2.m.daocloud.io
http://hub-mirror.c.163.com

除了鏡像加速外,我一般還會設置日志文件的 max-size ,以及 cgroupdriver 。

max-size 配置可以防止日志文件過大

native.cgroupdriver 可選 cgroupfs 和 systemd 兩個選項,詳見 (Docker 文檔的 Options for the runtime 小節)[https://docs.docker.com/engine/reference/commandline/dockerd/#docker-runtime-execution-options]。systemd 用於 cgroup v2 host ,而 wsl 由於目前不兼容 systemd ,只能選擇cgroupfs 。在生產環境的服務器上,應優先使用 systemd 選項。雖然 cgroupfs 目前是docker的默認選項,我還是會特別指定它。

sudo mkdir /etc/docker/

MIRROR=https://docker.mirrors.ustc.edu.cn
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "registry-mirrors": ["$MIRROR"],
  "insecure-registries": ["192.168.196.110:5000"]
}
EOF

至此,本教程結束了,你可以通過 sudo service docker start 啟動 docker,enjoy 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM