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