ARTICLE · 1215547
【AI工具链】跟着敲一遍①: openEuler 装 Docker 报错,照抄就跑通



.
.
阅读本文 
系列:21 天本地 AI 工具链 · Day 1(第 1/5 篇) 前情回顾:本系列要在 4GB 虚拟机上跑通 Ollama + Open WebUI + RAG 知识库;Day 1 先把容器地基打牢。 实测环境:openEuler 22.03 SP4 / x86_64 / 虚拟机 4GB / 4 vCPU
照着多数教程敲第一行就报错?这不是你的问题——openEuler 不在 Docker 官方支持列表。本文把这条链路拆成可直接照抄的清单,跟着敲一遍就能跑通。
系统:openEuler 22.03 SP4(x86_64 / 鲲鹏 aarch64 均可) 内存:4GB(本系列真实环境) 目标版本:Docker CE 26.1.3
先确认系统与架构:
[root@LinuxPythonWorkshop ~]# cat /etc/os-release | head -3[root@LinuxPythonWorkshop ~]# uname -m

[root@LinuxPythonWorkshop ~]# curl -fsSL https://get.docker.com | sh curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to get.docker.com:443 
也就是说,大陆直连 get.docker.com 会先在网络层被拦下(curl: (35)),根本走不到发行版检查那一步。
即便网络通了,脚本还会读 /etc/os-release 的发行版 ID 做匹配:openEuler 的 ID 是 openeuler,不在白名单,最终仍会以 Unsupported distribution 'openeuler' 退出。
两条路都堵死,所以不要在这条路上耗:改 ID 骗脚本会引入依赖与 systemd 单元错位;正确做法是用仓库方式手动安装(国内源直连,不经 get.docker.com),并做架构自适应。
以下命令以 root 执行,终端提示符统一为 [root@LinuxPythonWorkshop ~]#;含变量/条件判断的片段已写成可整行粘贴的形式。
① 架构适配、选仓库
[root@LinuxPythonWorkshop ~]# ARCH=$(uname -m); echo $ARCH [root@LinuxPythonWorkshop ~]# if [ "$ARCH" = "aarch64" ]; then REPO_URL="https://mirrors.openeuler.org/openEuler-22.03-LTS/docker-ce.repo"; else REPO_URL="https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo"; fi [root@LinuxPythonWorkshop ~]# curl -fsSL "$REPO_URL" -o /etc/yum.repos.d/docker-ce.repo && ls -l /etc/yum.repos.d/docker-ce.repo 
📖 初学者讲解:为什么要分架构? openEuler 仓库没有 yum-utils,不能走 yum-config-manager,所以我们直接用 curl 拉 .repo 文件。x86_64 用华为云的 CentOS 兼容源,鲲鹏(aarch64)用 openEuler 官方源——两个架构的仓库不同,不能混用。
② x86_64 换源与刷新缓存
[root@LinuxPythonWorkshop ~]# sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo [root@LinuxPythonWorkshop ~]# sed -i 's+\$releasever+8+' /etc/yum.repos.d/docker-ce.repo[root@LinuxPythonWorkshop ~]# dnf makecache
📖 初学者讲解:CentOS 兼容源的 $releasever 默认会解析成 openEuler 的版本号(如 22.03),仓库里没有对应目录,必须替换成 8。这一步不做,dnf 会报找不到 repodata。本段只在 x86_64 执行,鲲鹏跳过。
③ 安装 Docker CE
[root@LinuxPythonWorkshop ~]# dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 已装过时,用下面这条复核版本[root@LinuxPythonWorkshop ~]# rpm -qa | grep -E 'docker-ce|containerd|docker-compose'

📖 初学者讲解:必须一起装 containerd.io 与 docker-compose-plugin。只装 docker-ce 会缺容器运行时,docker run 直接失败。实测装完后 docker-ce、docker-ce-cli、containerd.io、docker-compose-plugin 均在 26.1.3 版本线。
④ 写 daemon.json(镜像加速)
[root@LinuxPythonWorkshop ~]# mkdir -p /etc/docker[root@LinuxPythonWorkshop ~]# vi /etc/docker/daemon.json
写入以下内容(严格 JSON,末尾无逗号):
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://docker.1ms.run" ], "storage-driver": "overlay2", "exec-opts": ["native.cgroupdriver=systemd"] } 📖 初学者讲解:大陆不配镜像源,docker pull 基本拉不动。daemon.json 是严格 JSON,末尾不能有多余逗号,否则 Docker 起不来且报错不直观。鲲鹏还要加一行 "storage-opts": ["overlay2.override_kernel_check=true"]。
⑤ 启动、免 sudo 与验证
[root@LinuxPythonWorkshop ~]# systemctl daemon-reload[root@LinuxPythonWorkshop ~]# systemctl enable --now docker[root@LinuxPythonWorkshop ~]# usermod -aG docker root
[root@LinuxPythonWorkshop ~]# docker --version[root@LinuxPythonWorkshop ~]# docker run --rm hello-world

最后确认镜像加速器已生效:
[root@LinuxPythonWorkshop ~]# docker info 2>/dev/null | grep -A3 "Registry Mirrors" 
📖 初学者讲解:usermod -aG docker 之后要注销重登(或 newgrp docker)才生效——组权限在登录时加载,当前 shell 不会自动更新。
releasever 改 8 | dnf | |
docker pull |
docker --version正常(实测 26.1.3)
docker run hello-world输出 Hello from Docker!
docker info里 Registry Mirrors 列出镜像源

curl: (35) Connection reset | ||
Unsupported distribution | ||
Unable to find a match: yum-utils | ||
overlay2.override_kernel_check=true | ||
permission denied | newgrp docker |
dnf update 是最大耗时项:约 800MB / 578 个包,10-30 分钟。包计数从 291 跳到 578 属正常;Docker 本体安装 + 验证通常 5 分钟内。
本文正文为分段照抄版;完整一键脚本(91 行,含颜色/日志函数与完整 daemon.json)已上传网盘,与后续 4 篇共用同一入口:
链接:https://pan.baidu.com/netdisk/share?surl=BOHEWiHa8UQXHR2g6RpJOg 提取码: ai25
一、选择题(5 题)
1. openEuler 执行官方 install.sh 报 Unsupported distribution,最稳妥的处置是?
A. 改 /etc/os-release 把 ID 改成 centos
B. 用仓库方式手动配置 docker-ce.repo 再 dnf install
C. 换成 podman
D. 下载 docker 二进制丢进 /usr/bin
2. daemon.json 末尾多写一个逗号,最可能的结果是?
A. Docker 自动忽略
B. 镜像加速失效但 Docker 正常
C. Docker 服务起不来
D. 只是警告,无影响
3. registry-mirrors 的主要作用是?
A. 加速 docker.io 镜像拉取
B. 加速 ghcr.io 镜像拉取
C. 提供容器 DNS 解析
D. 限制镜像大小
4. x86_64 上脚本把 $releasever 替换成 8,原因是?
A. 降低内核版本
B. 兼容 openEuler 22.03
C. 指定 Docker 版本
D. 匹配华为云 CentOS 兼容源目录
5. 执行 usermod -aG docker $USER 后仍报 permission denied,最可能的原因是?
A. Docker 未安装
B. 镜像未拉取
C. 当前 shell 未重新加载组权限
D. 端口被占用
二、填空题(2 题)
1. openEuler 22.03 仓库中没有 yum-utils,脚本改用 __ 直接下载 docker-ce.repo 文件。
2. 鲲鹏(aarch64)需要在 daemon.json 中加 __ 才能避免 overlay2 启动报错。
🎁 答对粉丝福利:
将答案按顺序发至评论区, 全部答对的前50位粉丝,将获得:
✅ 赠送完整的《21天工具链接实验手册 》


#openEuler #Docker #容器 #Linux运维 #AI工具链















































































