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

在 Ubuntu 26.04 (WSL2) 上通过阿里云镜像源安装 Docker CE 完整教程

在 Ubuntu 26.04 (WSL2) 上通过阿里云镜像源安装 Docker CE 完整教程

适用环境:Ubuntu 26.04 LTS(resolute)、WSL2(systemd 已启用)、外网受限的内网/中国大陆网络

本教程包含:环境检测 → 安装 → 用户组配置 → 镜像加速器配置(解决 Docker 29 containerd-snapshotter 镜像失效问题)→ 验证


目录

  1. 环境检测
  2. 可行性分析
  3. Docker CE 安装
  4. 用户组配置
  5. 镜像加速器配置
  6. 验证
  7. 常见问题排查
  8. 常用命令速查

1. 环境检测

1.1 系统信息

uname-acat/etc/os-release

应当看到:

Linux ... 6.18.x-microsoft-standard-WSL2 # ... x86_64 GNU/Linux PRETTY_NAME="Ubuntu 26.04 LTS" VERSION_CODENAME=resolute

1.2 关键依赖检查

# systemd 必须启用(WSL2 默认在 /etc/wsl.conf 中设置 [boot] systemd=true)ps-p1-ocomm=# cgroup v2 必须挂载stat-fc%T /sys/fs/cgroup/# 应输出 cgroup2fs# 必须有 curlcurl--version|head-1# 必须有 iptables 或 nftables(Docker 网络依赖)whichiptables||whichnft

如果iptables/nftables不存在,先安装:sudo apt-get install -y iptables

1.3 用户与磁盘

whoamiid# 必须包含 sudo 组df-h/# 至少 5 GB 可用free-h# 至少 1 GB 可用

2. 可行性分析

2.1 检查阿里云镜像是否支持你的发行版

curl-s-o/dev/null-w"%{http_code}\n"\https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/$(./etc/os-release&&echo$VERSION_CODENAME)/Release
  • 输出200支持,可继续
  • 输出404→ 当前 codename 未收录,可改用jammy(22.04)兜底

2.2 检查镜像源 GPG 可达性

curl-s-o/dev/null-w"%{http_code}\n"\https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg

应输出200


3. Docker CE 安装

一键脚本(推荐):

# 3.1 预装系统依赖sudoapt-getupdatesudoapt-getinstall-yca-certificatescurlgnupg iptables# 3.2 添加阿里云 Docker GPG 公钥sudoinstall-m0755-d/etc/apt/keyringscurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg\|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgsudochmoda+r /etc/apt/keyrings/docker.gpg# 3.3 写入阿里云 apt 源(自动取当前 Ubuntu codename)echo"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu$(./etc/os-release&&echo$VERSION_CODENAME)stable"\|sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 3.4 安装 Docker CE 及全家桶sudoapt-getupdatesudoapt-getinstall-ydocker-ce docker-ce-cli containerd.io\docker-buildx-plugin docker-compose-plugin# 3.5 启动并设置开机自启sudosystemctlenable--nowdockersudosystemctlenable--nowcontainerd

3.6 验证安装

docker--version# Docker Engine 版本dockercompose version# Compose 插件版本(注意是空格)containerd--versionsudosystemctl is-activedocker# 应输出 active

预期输出示例:

Docker version 29.6.1, build 8900f1d Docker Compose version v5.2.0 containerd containerd.io 2.2.5 active

4. 用户组配置

把当前用户加入docker组,使普通用户免sudo使用 docker。

sudousermod-aGdocker$USER# 验证id$USER|grepdocker# 应包含 (docker)

⚠️WSL2 中组员关系需要重新登录才能生效。在 WSL 终端中执行exit后再次进入;或在当前 shell 临时生效:

newgrpdocker# 等价于重新登录到含 docker 组的会话

5. 镜像加速器配置

5.1 核心问题(Docker 29 踩坑必看)

Docker 29.x 默认启用containerd snapshotter(存储驱动显示为overlayfs / driver-type: io.containerd.snapshotter.v1)。在该模式下:

  • daemon.json中的registry-mirrors不会生效
  • 会出现日志Host doesn't match cfgHost=registry-1.docker.io host=<mirror>
  • 即使镜像源可达,pull 仍会回落到registry-1.docker.io然后超时

解决方法:关闭 containerd snapshotter,回到经典 overlay2 模式。

5.2 配置步骤

sudotee/etc/docker/daemon.json>/dev/null<<'EOF' { "features": { "containerd-snapshotter": false }, "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.1ms.run", "https://docker.m.daocloud.io" ], "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }, "storage-driver": "overlay2" } EOF# 强制重启(systemctl restart 在某些场景下不会完全重启 dockerd,必须 kill)sudosystemctl stopdockercontainerdsudokillall-9dockerd containerd2>/dev/nullsleep3sudosystemctl start containerdsudosystemctl startdockersleep4

5.3 验证镜像源生效

sudodockerinfo|grep-A4"Registry Mirrors:"

预期输出:

Registry Mirrors: https://docker.xuanyuan.me/ https://docker.1ms.run/ https://docker.m.daocloud.io/

同时检查存储驱动:

sudodockerinfo|grep-A2"Storage Driver"

应显示Storage Driver: overlay2(不再是overlayfs+ containerd snapshotter)。


6. 验证

6.1 拉取并运行 hello-world

sudodockerpull hello-worldsudodockerrun--rmhello-world

预期结尾输出:

Hello from Docker! This message shows that your installation appears to be working correctly. ...

6.2 验证免 sudo(需重新登录后)

dockerpsdockerimagesdockercompose version

6.3 验证 compose 插件

mkdir-p/tmp/test-compose&&cd/tmp/test-composecat>docker-compose.yml<<'EOF' services: hello: image: hello-world EOFsudodockercompose up

7. 常见问题排查

Q1:pull 镜像一直超时,但镜像源 ping 可达

症状

failed to do request: Head "https://registry-1.docker.io/v2/...": dial tcp ...:443: i/o timeout warning msg="Host doesn't match" cfgHost=registry-1.docker.io host=<mirror>

原因:Docker 29 默认 containerd snapshotter 模式使registry-mirrors失效。

解决:参见 §5.2,关闭 snapshotter 并kill -9重启。

Q2:sudo systemctl restart docker后 PID 不变,配置未生效

原因:systemd 的Restart=配置有时不会完全重启 dockerd。

解决sudo killall -9 dockerd containerd后再systemctl start

Q3:docker composecommand not found

原因:未安装docker-compose-plugin

解决sudo apt-get install docker-compose-plugin,新命令格式是docker compose(带空格),不是docker-compose

Q4:用户加入 docker 组后仍需 sudo

原因:组成员关系需重新登录会话才生效。

解决

  • 在 WSL 中exit后重新进入
  • 或在当前 shell 执行newgrp docker
  • 或重启 WSL(在 PowerShell 中wsl --shutdown然后重开)

Q5:MySQL 官方源报Release 404

症状Ign:6 http://repo.mysql.com/apt/ubuntu resolute InRelease / Err:7 ... Release / 404 Not Found

原因:第三方源(如 MySQL 官方)尚未支持 Ubuntu 26.04 codename。

解决:暂时禁用该源,或改用 Docker 部署 MySQL。

sudols/etc/apt/sources.list.d/# 找到 mysql 源sudomv/etc/apt/sources.list.d/mysql.list /etc/apt/sources.list.d/mysql.list.baksudoapt-getupdate

Q6:能否让多个用户共享 docker?

sudousermod-aGdockeruser1sudousermod-aGdockeruser2# 这些用户重新登录后均免 sudo 使用 docker

8. 常用命令速查

8.1 Docker 服务管理

sudosystemctl statusdocker# 查看状态sudosystemctl startdocker# 启动sudosystemctl stopdocker# 停止sudosystemctl restartdocker# 重启(不可靠时用 killall)sudojournalctl-udocker-f# 查看日志

8.2 镜像操作

dockerimages# 列出本地镜像dockersearch nginx# 搜索镜像(若镜像源支持)dockerpull nginx:1.27# 拉取镜像dockerrmi nginx:1.27# 删除镜像dockerimage prune-a# 清理未使用镜像dockertag nginx:1.27 mynginx:v1# 打标签

8.3 容器操作

dockerps-a# 列出所有容器dockerrun-d--nameweb-p80:80 nginx:1.27# 后台启动dockerlogs-fweb# 查看日志dockerexec-itwebbash# 进入容器dockerstop web# 停止容器dockerstart web# 启动容器dockerrm-fweb# 强制删除容器

8.4 docker compose(v2 插件)

dockercompose up-d# 后台启动dockercompose down# 停止并删除dockercomposeps# 查看状态dockercompose logs-f# 查看日志dockercompose pull# 拉取所有镜像dockercomposeexecwebbash# 进入服务

8.5 网络与卷

dockernetworkls# 网络列表dockernetwork create mynet# 创建网络dockervolumels# 卷列表dockervolume create mydata# 创建卷dockersystemdf# 磁盘占用dockersystem prune-a# 清理所有未使用资源

附录 A:本教程实测环境快照

OS: Ubuntu 26.04 LTS (resolute) Kernel: 6.18.33.1-microsoft-standard-WSL2 CPU: Intel i9-12900H (10C/20T) Memory: 23 GiB Disk: 1 TB (3.3 GB used) systemd: PID 1 = systemd cgroup: v2 (cgroup2fs) Docker: 29.6.1 Compose: v5.2.0 containerd: 2.2.5 runc: 1.3.6 Storage: overlay2 (经典模式,containerd-snapshotter=false) User: lhz (sudo + docker 组)

附录 B:配置文件最终样例

/etc/docker/daemon.json

{"features":{"containerd-snapshotter":false},"registry-mirrors":["https://docker.xuanyuan.me","https://docker.1ms.run","https://docker.m.daocloud.io"],"log-driver":"json-file","log-opts":{"max-size":"100m","max-file":"3"},"storage-driver":"overlay2"}

/etc/apt/sources.list.d/docker.list

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu resolute stable

http://www.gsyq.cn/news/1616600.html

相关文章:

  • 唑吡坦依赖困扰失眠患者,莱博雷生双重OX受体拮抗能否开辟新路
  • AnythingLLM:构建私有化AI知识库的全栈解决方案
  • Tomcat CVE-2025-24813漏洞修复实战:从原理到生产环境升级
  • 如何快速突破百度网盘限速:5分钟掌握免费直链解析技巧
  • 别再只把 `property` 当装饰器:一文看懂 Python 属性访问的底层机制
  • Unity游戏汉化神器:XUnity Auto Translator让你无障碍畅玩外语游戏
  • GPT-3 davinci-3实测:指令遵循、知识保鲜与生产级调参
  • Ubuntu24.04编译linux-xlnx-xlnx_rebase_v5.4的问题
  • WebLogic高危漏洞应急响应实战:从CVE-2019-2725反序列化攻击到主动防御
  • openEuler/bigdata:构建下一代大数据生态系统的终极指南 [特殊字符]
  • 百度网盘解析工具终极指南:如何轻松获取真实下载地址
  • 暗黑3自动化宏工具终极指南:告别手动操作,解放你的双手
  • 低成本6DoF运动跟踪方案:IMU与MCU的优化实践
  • DownKyi视频下载神器:5个实用技巧快速掌握B站内容收藏
  • 如何快速解决iSulad授权配置的10个常见问题:openEuler authz插件终极指南
  • iTrustee Client多线程安全:10个并发访问TEE资源的线程安全机制解析
  • KeyStore Explorer:Java密钥库图形化管理工具的终极指南
  • Dell G15开源温度控制中心:专业散热管理方案完全指南
  • 百度网盘高速下载终极指南:告别限速的完整解决方案
  • 如何在3分钟内为Blender安装完整的3MF格式插件:终极3D打印工作流指南
  • Midscene.js架构深度剖析:纯视觉驱动的跨平台AI自动化实战指南
  • 系统安全与性能检查:env_check在openEuler升级后的应用实践
  • 推荐学习 C++11 的材料
  • OpenDesign Components 组件开发指南:从文档规范到代码实现
  • utcpio架构解析:Rust如何重写经典Unix工具
  • GEO优化效果检测指南:5个核心指标让你告别盲目投放
  • 2026苹果手机去水印App推荐:免费好用的iPhone去除视频图片水印软件AppStore实测
  • 百度网盘直链解析工具:5步实现高速下载的完整方案
  • QEMU高级功能:热迁移、快照、内存气球技术解析
  • 如何快速上手X-diagnosis:5分钟完成安装配置的完整教程