相信在 Docker Desktop 开始收费后,大家都收到了公司要求卸载 Docker Desktop 的要求。之后大家陆续转向了 Podman 或者其他代替服务。也有朋友选择了在 WSL 下安装 Docker 服务。
由于之前 WSL 无法使用 systemd,我们无法按照官方文档的步骤安装 Docker。以及还有安装后又无法自动启动,Windows 无法执行 docker 命令等问题,对新手来说学习成本颇高。
2022年9月,WSL 提供了 systemd 的支持,docker 安装相应地变简单了一点(可能?)。
修改 /etc/wsl.conf
文件并添加下面两行:
[boot]
systemd=true
然后执行 wsl.exe --shutdown
重启WSL。
友情提醒: 如果你远在2022年9月之前就创建了WSL虚拟机。你的WSL可能还没支持 systemd 。你可以按照下面这篇文章进行更新:
Systemd support is now available in WSL!
不想重启同样的内容,请按照官方文档进行安装。一切与你在普通的 Ubuntu 下安装没有区别。
Install Docker Engine on Ubuntu
步骤 #2 后你已经可以在 WSL 里正常地使用 docker。但是如果你需要在 Windows 下使用,你还得让 dockerd 暴露 TCP 服务,以便 Windows 下的各种工具访问。
docker.service.d
目录mkdir -p /etc/systemd/system/docker.service.d/
vi /etc/systemd/system/docker.service.d/tcp.conf
然后添加
[Service]
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd='/run/containerd/containerd.sock'
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 实际上分为两部分。一部分是 dockerd(又或者叫 docker engine)。另外一部分是 docker-cli。
docker-cli 就是你命令行敲的 docker 命令。这个命令行工具可以单独下载,而不需要安装 Docker Desktiop:
如果需要其他系统的 docker-cli,可以跳转:
Install docker-cli without Docker Desktop
添加用户环境变量 DOCKER_HOST
,并赋值为 tcp://localhost:2375
。
此时,包括docker-cli在内的大部分 Windows 工具都可以正常访问 WSL 的 dockerd 服务。