WSL 必看!安装原生 Docker,告别 Docker Desktop

Docker Desktop 好用,但有两个问题:一是商用要收费(250人以上企业 $21/人/月),二是它自己套了一层 Hyper-V 虚拟机,吃内存、占磁盘,启动还慢。

其实 WSL2 本身就是一个完整的 Linux 环境,直接在里面装 Docker Engine 就行——原生跑、不吃额外资源、完全免费。Windows 侧再装个管理工具,体验不比 Docker Desktop 差。


一、开启 systemd

Docker Engine 依赖 systemd 管理服务,WSL2 默认没开。先开它。

在 WSL 终端里编辑 /etc/wsl.conf

sudo nano /etc/wsl.conf

写入:

[boot]
systemd=true

保存后,在 PowerShell 里重启 WSL:

wsl --shutdown

重新进 WSL,验证 systemd 是否生效:

systemctl --version

有版本号输出就说明 systemd 已启用。


二、安装 Docker Engine

在 WSL 终端里依次执行:

# 一键安装(Docker 官方脚本)
curl -fsSL https://get.docker.com | sudo sh

# 当前用户加入 docker 组,免 sudo
sudo usermod -aG docker $USER

# 启动 + 开机自启
sudo systemctl enable --now docker

安装完后退出 WSL 再重新进(让用户组生效),验证:

docker ps

能看到容器列表(空的也行)就说明 Docker Engine 已经在跑了。

和 Docker Desktop 的区别

对比Docker DesktopWSL 装原生 Docker Engine
资源占用额外 Hyper-V VM,吃 2-4GB 内存直接跑在 WSL 里,零额外开销
商用许可250人以上收费完全免费,无限制
Windows 版本需 Pro/EnterpriseHome 版也能用
启动速度要等 VM 启动WSL 起来就跟着起
管理界面自带 GUI需自行装管理工具

三、开启 TCP 远程访问

默认 Docker 只监听 Unix socket,Windows 侧的管理工具连不上。需要开一个 TCP 端口。

编辑 /etc/docker/daemon.json

sudo nano /etc/docker/daemon.json

写入:

{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

重启 Docker:

sudo systemctl restart docker

安全提示0.0.0.0:2375 表示监听所有网卡。如果你在 mirrored 网络模式下,局域网设备理论上也能访问到这个端口。生产环境建议绑 127.0.0.1 或加 TLS 认证。本地开发用 0.0.0.0 没问题。


四、Windows 侧管理工具(三选一)

Docker Engine 跑在 WSL 里了,Windows 侧需要一个管理工具。根据你的使用习惯选一种。

方案 A:Portainer(Web 可视化管理,推荐)

在 WSL 里一行启动 Portainer:

docker run -d -p 9000:9000 --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

然后 Windows 浏览器打开 http://localhost:9000,设置个管理员密码就能用了。

Portainer 能做:

  • 容器的启动/停止/重启/删除
  • 镜像拉取、构建、清理
  • 网络和卷的可视化管理
  • Stack(Docker Compose)的在线编辑和部署
  • 容器日志实时查看
  • 资源占用监控

基本上 Docker Desktop GUI 能做的事它都能做,还多了 Stack 管理和多环境切换。

方案 B:LazyDocker(终端 TUI)

如果你更喜欢终端操作,LazyDocker 是个很好的选择:

# 装 Go(如果没装的话)
sudo apt install golang -y

# 装 lazydocker
go install github.com/jesseduffield/lazydocker@latest

# 加到 PATH
echo 'export PATH=$PATH:~/go/bin' >> ~/.bashrc
source ~/.bashrc

# 启动
lazydocker

LazyDocker 的界面:

  • 键盘上下选容器,左右切 Tab(日志/Stats/Config/Top)
  • d 删除容器,r 重启,s 停止,b 批量操作
  • 底部直接显示 CPU/内存/网络实时曲线
  • 镜像、卷管理也集成在里面

docker ps + docker logs + docker stats 来回切高效得多,而且是终端原生,SSH 连远程 Docker 也能用。

方案 C:Windows Docker CLI

如果你就是喜欢命令行,不想装任何 GUI:

在 Windows 侧装 Docker CLI(不装 Docker Desktop),设环境变量指向 WSL 里的 Docker Engine:

# 设置 DOCKER_HOST
setx DOCKER_HOST "tcp://127.0.0.1:2375"

重开 PowerShell,直接用:

docker ps
docker images
docker run -d -p 8080:80 nginx

需要 WSL 网络互通配置好(mirrored 模式或 localhost 转发),127.0.0.1:2375 才能通。

装 Docker CLI 的方法:从 Docker 官方 下载 Windows 版二进制,或用 winget install Docker.DockerCLI(只装 CLI 不装 Desktop)。


五、完整配置清单

WSL 侧

文件内容
/etc/wsl.conf[boot]systemd=true
/etc/docker/daemon.jsonhoststcp://0.0.0.0:2375
Docker 服务sudo systemctl enable --now docker
Portainerdocker run -d -p 9000:9000 ...

Windows 侧

配置
%USERPROFILE%\.wslconfignetworkingMode=mirrored
环境变量 DOCKER_HOST(可选)tcp://127.0.0.1:2375
管理工具Portainer(Web)或 LazyDocker(TUI)或 Docker CLI

小结

这套方案的核心思路:WSL 当 Linux 服务器,Windows 当管理终端

Docker Engine 原生跑在 WSL 里,不套 Hyper-V VM,不吃额外内存。Windows 侧通过 TCP 端口或 Web 面板管理,体验不输 Docker Desktop。

最爽的是完全免费——不用管 Docker Desktop 的商用许可限制,Home 版 Windows 也能用,老电脑也跑得动。如果你还在用 Docker Desktop 的个人版,强烈建议试一下这套方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙行天5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值