WSL2里手动安装Docker 遇坑

WSL2 里手动安装 Docker Engine 时遇坑:systemctl 和 service 命令在默认的 WSL2 Ubuntu 中 无法使用,因为 WSL2 没有 systemd。怎么办?
自己操作让 Docker Engine(dockerd)直接跑起来,挂到 /var/run/docker.sock,而不是依赖 systemctl


🛠️ 目标

WSL2 Ubuntu 20.04 中:

  • 自己起 dockerd
  • 生成 /var/run/docker.sock
  • 直接能用 docker 命令连接。

🧩 操作步骤

第一步:确认你已经安装好 docker-ce

如果没装的话,先按官方步骤或者快速装好:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

第二步:启动 dockerd 手动服务(重点)

直接在 WSL2 里执行:

sudo dockerd --host unix:///var/run/docker.sock

解释一下:

  • dockerdDocker daemon,就是服务端;
  • --host unix:///var/run/docker.sock 表示:
    • 监听一个 UNIX Socket(本地文件)作为通信接口;
    • 这个 socket 文件就是 /var/run/docker.sock

如果成功,会看到类似日志:

INFO[2024-04-27T14:00:00.000000000Z] API listen on /var/run/docker.sock

然后你就可以开一个新终端,测试:

docker ps

成功!


第三步(可选):后台运行 dockerd

手动运行是前台阻塞的,如果你想后台运行:

方案1:加上 &

sudo dockerd --host unix:///var/run/docker.sock &

方案2:用 nohup 保持挂后台

nohup sudo dockerd --host unix:///var/run/docker.sock > /tmp/dockerd.log 2>&1 &

这样即使关闭终端也不掉。


第四步(进阶):自动启动(方便每次开 WSL)

方法1:用户配置文件

如果你懒得每次手动启动,可以在 ~/.bashrc~/.profile 最后加上:

# 启动 Docker Daemon
if [ ! -S /var/run/docker.sock ]; then
    sudo nohup dockerd --host unix:///var/run/docker.sock > /tmp/dockerd.log 2>&1 &
fi

这样每次打开 WSL,都会自动检查 /var/run/docker.sock 是否存在,不存在就自己拉起来。

方法 2:启用 systemd 支持(适合高级用户)

从 WSL 1.0.3 起,微软原生支持 启用 systemd

  1. 编辑 /etc/wsl.conf

    sudo nano /etc/wsl.conf
    

    内容如下:

    [boot]
    systemd=true
    
  2. 重启 WSL:

    wsl --shutdown
    
  3. 再打开 Ubuntu,这时可以使用 systemctl 启动服务了:

    sudo systemctl enable docker
    sudo systemctl start docker
    

但这种方式对 Docker Engine 手动安装用户不总是兼容,不推荐轻度用户使用


🎯 注意事项

  • dockerd 必须用 sudo,因为它要创建系统级 socket;
  • 启动后要保证 /var/run/docker.sockroot:docker 权限;
  • 你的用户如果想免 sudo 用 docker,可以把自己加到 docker 组里:
sudo usermod -aG docker $(whoami)
newgrp docker

然后就可以直接:

docker ps

不需要 sudo。


✅ 小结

步骤说明
安装好 dockersudo apt install docker-ce
手动起 dockerdsudo dockerd --host unix:///var/run/docker.sock
新终端用 dockerdocker ps
后台起 / 自动起nohup.bashrc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员柒叔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值