当前位置: 首页 > news >正文

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)

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

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

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


🎯 注意事项

  • 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

相关文章:

  • 14【模块学习】74HC595:使用学习
  • SpringMVC 前后端数据交互 中文乱码
  • 微服务基础-Ribbon
  • 同样开源的自动化工作流工具n8n和Dify对比
  • 从零搭建云原生后端系统 —— 一次真实项目实践分享
  • 迷你世界UGC3.0脚本Wiki触发器脚本交互
  • 云原生--核心组件-容器篇-4-认识Dockerfile文件(镜像创建的基础文件和指令介绍)
  • 企业数据赋能 | 应用模板分享:汽车销售仪表板
  • 《一键式江湖:Docker Compose中间件部署108式》开篇:告别“配置地狱”,从此笑傲云原生武林!》
  • 以科技之力,启智慧出行 —— 阅读《NVIDIA 自动驾驶安全报告》及观看实验室视频有感
  • 【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南
  • 大数据学习栈记——Hive4.0.1安装
  • 运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级
  • MCP+A2A协议终极指南:AI系统构建技术全解析(医疗/金融实战+Streamable HTTP代码详解)
  • Vue Router 核心指南:构建高效单页应用的导航艺术
  • Spring MVC 拦截器教程
  • 08-STM32外部中断
  • 【题解-Acwing】861. 二分图的最大匹配
  • 云原生 | K8S中数据存储之StorageClass
  • MAGI-1: Autoregressive Video Generation at Scale
  • 四川落马厅官周海琦受审,1000多人接受警示教育
  • 青年如何打破“千人一面”,创造属于自己的文化观?
  • 广西给出最后期限:6月30日之前主动交代问题可从宽处理
  • 习近平在中共中央政治局第二十次集体学习时强调,坚持自立自强,突出应用导向,推动人工智能健康有序发展
  • 体育公益之约跨越山海,雪域高原果洛孕育足球梦
  • 药企销售的茶碱层层流转后部分被用于制毒,销售人员一审被判15年