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

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
http://www.xdnf.cn/news/2477.html

相关文章:

  • 234. 回文链表(java)
  • 李沐动手深度学习(pycharm中运行笔记)——07.自动求导
  • Kaamel白皮书:IoT设备安全隐私评估实践
  • Golang | 向倒排索引上添加删除文档
  • 每天五分钟深度学习框架pytorch:使用visdom绘制损失函数图像
  • 布隆过滤器(Bloom Filter)简介
  • Vue Router 核心指南:构建高效单页应用的导航艺术
  • 用Python做有趣的AI项目4:AI 表情识别助手
  • Linux:基础IO 文件系统
  • 吴恩达深度学习作业之风格转移Neural Style Transfer (pytorch)
  • 【创新实训项目博客】数据库搭建
  • pikachu靶场-敏感信息泄露
  • 深圳市富力达:SAP一体化管理助力精密制造升级 | 工博科技SAP客户案例
  • 在Azure Databricks中实现缓慢变化维度(SCD)的三种类型
  • 服务器不能复制粘贴文件的处理方式
  • 信竞中的数学(一):质数
  • 关于 React Fiber 架构、Hooks 原理
  • 机器学习的一百个概念(13)布里尔分数
  • OkHttp源码梳理
  • 数字后端设计 (六):验证——给芯片做「超严格体检」
  • 苍穹外卖(缓存商品、购物车)
  • 基于Qt5的蓝牙打印开发实战:从扫描到小票打印的全流程
  • 关系型数据库PostgreSQL vs MySQL 深度对比:专业术语+白话解析+实战案例
  • Tomcat的安装与配置
  • 高能效计算:破解算力增长与能源约束的科技密码
  • JavaScript 函数与算法性能优化
  • 微软GraphRAG的安装和在RAG中的使用体会
  • Javase 基础入门 —— 06 final + 单例
  • 游戏哪些接口会暴露源IP?_深度解析服务器通信安全隐患
  • Apache Sqoop数据采集问题