openEuler 22.03 LTS-SP1 高版本Docker部署避坑指南:从仓库配置到服务启动 1. 为什么需要高版本Docker在openEuler 22.03 LTS-SP1系统中如果直接使用yum install docker命令安装默认会安装Docker 18.09.0版本。这个版本存在一些已知问题比如容器网络不稳定、资源管理不够精细等。我在实际项目中就遇到过容器莫名其妙崩溃的情况排查了半天才发现是Docker版本太老导致的。高版本Docker如24.x/26.x带来了很多新特性和性能优化更稳定的容器运行时减少了容器崩溃的概率更好的资源管理支持cgroups v2资源限制更精确增强的安全性默认启用seccomp和AppArmor新功能支持比如buildkit构建加速、rootless模式等2. 配置Docker官方仓库2.1 添加Docker CE仓库第一步是添加Docker官方仓库。这里有个坑要注意openEuler虽然基于CentOS但Docker官方并没有专门为openEuler维护的仓库。不过别担心我们可以用CentOS的仓库替代sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo执行这个命令后系统会在/etc/yum.repos.d/目录下生成一个docker-ce.repo文件。我建议你先检查下这个文件是否生成成功ls -l /etc/yum.repos.d/docker-ce.repo2.2 修改仓库配置这里有个关键步骤需要特别注意。如果你直接使用这个仓库很可能会遇到SSL connect error错误。这是因为Docker官方仓库中没有openEuler 22.03 LTS-SP1对应的目录结构。解决办法是修改docker-ce.repo文件把$releasever替换为7对应CentOS 7sudo sed -i s/\$releasever/7/g /etc/yum.repos.d/docker-ce.repo这个命令会批量替换文件中的所有$releasever为7。你也可以手动编辑文件找到类似这样的部分baseurlhttps://download.docker.com/linux/centos/$releasever/$basearch/stable改为baseurlhttps://download.docker.com/linux/centos/7/$basearch/stable3. 安装指定版本的Docker3.1 查询可用版本在安装前建议先查看仓库中有哪些Docker版本可用yum list docker-ce --showduplicates | sort -r这个命令会列出所有可安装的Docker版本按版本号从高到低排序。输出看起来类似这样docker-ce.x86_64 3:26.1.4-1.el7 docker-ce-stable docker-ce.x86_64 3:26.1.3-1.el7 docker-ce-stable docker-ce.x86_64 3:24.0.7-1.el7 docker-ce-stable ...3.2 安装最新稳定版我推荐安装最新的稳定版本目前是26.x系列命令如下sudo yum install -y docker-ce docker-ce-cli containerd.io如果你需要安装特定版本比如24.0.2可以这样sudo yum install -y docker-ce-24.0.2 docker-ce-cli-24.0.2 containerd.io安装过程中可能会遇到依赖问题特别是container-selinux和fuse-overlayfs等包。这些包在openEuler的默认仓库中都有系统会自动处理依赖关系。4. 启动和验证Docker服务4.1 启动Docker服务安装完成后需要启动Docker服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker我建议你再检查下服务状态确保一切正常sudo systemctl status docker如果看到active (running)字样说明服务已经成功启动。4.2 验证安装最后验证下Docker是否安装成功docker --version正常应该输出类似这样的信息Docker version 26.1.4, build 5650f9b为了进一步验证可以运行一个测试容器sudo docker run hello-world如果看到Hello from Docker!的欢迎信息说明你的Docker已经可以正常工作啦5. 常见问题排查在实际操作中你可能会遇到一些问题。这里分享几个我踩过的坑5.1 依赖冲突问题有时候安装高版本Docker会遇到依赖冲突特别是docker-ce-rootless-extras这个包。如果遇到类似错误nothing provides fuse-overlayfs 0.7 needed by docker-ce-rootless-extras解决办法是手动安装这些依赖sudo yum install -y fuse-overlayfs slirp4netns5.2 镜像拉取慢的问题国内用户可能会遇到Docker Hub镜像拉取慢的问题。建议配置国内镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的镜像加速器地址] } EOF sudo systemctl restart docker常用的镜像加速器包括阿里云、腾讯云等提供的服务。5.3 防火墙冲突如果你的系统启用了firewalld可能需要开放相关端口sudo firewall-cmd --permanent --add-port2375/tcp sudo firewall-cmd --reload6. 后续配置建议安装完成后我建议你做以下优化配置配置日志轮转防止日志文件过大sudo tee /etc/docker/daemon.json -EOF { log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } } EOF调整存储驱动根据你的文件系统选择合适的驱动sudo docker info | grep Storage Driver配置cgroup驱动与系统保持一致sudo tee /etc/docker/daemon.json -EOF { exec-opts: [native.cgroupdriversystemd] } EOF记得每次修改配置后都要重启Docker服务sudo systemctl restart docker