openEuler 22.03-LTS 离线部署 Docker 26:3 个关键 RPM 包与依赖解决全记录
openEuler 22.03-LTS 离线部署 Docker 26:3 个关键 RPM 包与依赖解决全记录
在企业内网或离线环境中部署高版本 Docker(如 26.x)是许多运维工程师面临的挑战。本文将详细介绍在 openEuler 22.03-LTS 系统上离线安装 Docker 26 的完整流程,包括关键 RPM 包的获取、依赖关系的解决以及验证方法。
1. 环境准备与离线包获取
在开始安装前,我们需要准备以下内容:
-
系统要求 :
- 已安装 openEuler 22.03-LTS 操作系统
- 至少 2GB 可用内存
- 10GB 以上可用磁盘空间
-
关键 RPM 包清单 : 以下是 Docker 26.x 所需的核心 RPM 包(x86_64 架构):
containerd.io-1.6.31-3.1.el8.x86_64.rpm docker-ce-26.1.3-1.el8.x86_64.rpm docker-ce-cli-26.1.3-1.el8.x86_64.rpm -
依赖包清单 : 根据实际测试,还需要以下依赖包:
container-selinux-2.124.0-1.gitf958d0c.module_el8.4.0+521+9df8e6d3.noarch.rpm libcgroup-0.41-19.el8.x86_64.rpm
提示:这些 RPM 包可以从 CentOS 8 的镜像源获取,虽然 openEuler 与 CentOS 的包管理兼容,但仍需注意版本匹配问题。
2. 离线安装步骤详解
2.1 安装依赖包
首先安装基础依赖包:
rpm -ivh libcgroup-0.41-19.el8.x86_64.rpm
rpm -ivh container-selinux-2.124.0-1.gitf958d0c.module_el8.4.0+521+9df8e6d3.noarch.rpm
2.2 安装 Docker 核心组件
按顺序安装 Docker 组件:
rpm -ivh containerd.io-1.6.31-3.1.el8.x86_64.rpm
rpm -ivh docker-ce-cli-26.1.3-1.el8.x86_64.rpm
rpm -ivh docker-ce-26.1.3-1.el8.x86_64.rpm
2.3 解决常见依赖问题
在离线环境中可能会遇到以下依赖问题及解决方案:
| 问题描述 | 解决方案 | 所需 RPM 包 |
|---|---|---|
| 缺少 libseccomp | 从 openEuler 镜像源获取 | libseccomp-2.5.1-1.oe2203.x86_64.rpm |
| 缺少 libtool-ltdl | 从 openEuler 镜像源获取 | libtool-ltdl-2.4.6-30.oe2203.x86_64.rpm |
| SELinux 策略冲突 | 临时禁用 SELinux 或安装正确策略 | container-selinux-2.xxx.rpm |
3. 配置与验证
3.1 基础配置
安装完成后,进行基本配置:
# 创建docker配置目录
mkdir -p /etc/docker
# 写入基础配置
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
3.2 服务管理
启动并启用 Docker 服务:
systemctl enable docker
systemctl start docker
3.3 验证安装
使用以下命令验证 Docker 是否正常运行:
docker version
docker info
docker run hello-world
4. 高级配置与优化
4.1 离线镜像导入
在离线环境中,可以通过以下方式导入 Docker 镜像:
# 在有网络的环境中保存镜像
docker pull nginx:latest
docker save -o nginx.tar nginx:latest
# 在离线环境中加载镜像
docker load -i nginx.tar
4.2 存储驱动优化
对于生产环境,建议使用 direct-lvm 存储驱动:
- 准备 LVM 卷组
- 修改
/etc/docker/daemon.json:
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.directlvm_device=/dev/sdX",
"dm.thinp_percent=95",
"dm.thinp_metapercent=1",
"dm.thinp_autoextend_threshold=80",
"dm.thinp_autoextend_percent=20",
"dm.directlvm_device_force=true"
]
}
4.3 网络配置
对于需要特定网络配置的环境:
# 创建自定义网络
docker network create \
--driver=bridge \
--subnet=172.28.0.0/16 \
--ip-range=172.28.5.0/24 \
--gateway=172.28.5.254 \
my-network
5. 常见问题解决
5.1 服务启动失败排查
如果 Docker 服务无法启动,可以按以下步骤排查:
-
查看日志:
journalctl -u docker -n 100 --no-pager -
常见错误及解决方案:
错误信息 可能原因 解决方案 Failed to start Docker Application Container Engine containerd 未运行 systemctl start containerdpermission denied SELinux 限制 临时禁用 SELinux 或配置正确策略 no such file or directory 内核模块缺失 加载 overlay 模块: modprobe overlay
5.2 兼容性问题处理
由于使用的是 CentOS 8 的 RPM 包,可能会遇到以下兼容性问题:
-
库版本冲突 :
# 检查缺失的库 ldd $(which dockerd) # 解决方案:从openEuler源获取兼容版本的库 -
systemd 单元文件问题 :
# 检查并修正单元文件 systemctl cat docker -
内核参数调整 :
# 增加最大文件描述符数量 echo "fs.file-max=1000000" >> /etc/sysctl.conf sysctl -p
6. 维护与升级策略
6.1 离线环境升级方案
在离线环境中升级 Docker 的推荐流程:
- 在有网络的环境中下载新版本 RPM 包
- 使用
rpm -Uvh命令按顺序升级 - 升级顺序:containerd.io → docker-ce-cli → docker-ce
6.2 备份与恢复
建议定期备份以下内容:
-
Docker 配置 :
tar -czvf docker-config-backup.tar.gz /etc/docker -
镜像与容器 :
# 备份所有镜像 docker save $(docker images -q) -o all-images.tar # 备份容器数据卷 tar -czvf docker-volumes.tar.gz /var/lib/docker/volumes -
恢复流程 :
# 恢复镜像 docker load -i all-images.tar # 恢复配置 tar -xzvf docker-config-backup.tar.gz -C /
7. 安全加固建议
7.1 基础安全配置
-
启用用户命名空间 :
echo "user.max_user_namespaces=15000" >> /etc/sysctl.conf sysctl -p -
限制容器能力 :
{ "default-capabilities": [ "CHOWN", "DAC_OVERRIDE", "FSETID", "FOWNER", "SETGID", "SETUID", "NET_BIND_SERVICE" ] }
7.2 审计与监控
-
启用 Docker 审计 :
echo "-w /usr/bin/docker -p x -k docker" >> /etc/audit/rules.d/docker.rules systemctl restart auditd -
资源限制 :
# 全局限制 echo '{"cgroup-parent":"/docker.slice"}' > /etc/docker/daemon.json # 单个容器限制 docker run --memory=1g --cpus=2 nginx
8. 性能调优指南
8.1 存储性能优化
-
选择合适的存储驱动 :
存储驱动 适用场景 性能特点 overlay2 默认选择 平衡性能与功能 devicemapper 需要直接块设备 更高IO性能 btrfs 需要快照功能 中等性能 -
调整日志配置 :
{ "log-driver": "json-file", "log-opts": { "max-size": "50m", "max-file": "3" } }
8.2 网络性能优化
-
选择网络驱动 :
网络驱动 适用场景 性能特点 bridge 默认网络 中等性能 macvlan 需要直接主机网络 接近原生性能 host 最高性能需求 无隔离 -
调整内核参数 :
echo "net.core.somaxconn=65535" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn_backlog=65535" >> /etc/sysctl.conf sysctl -p
9. 企业级部署建议
9.1 高可用架构
对于生产环境,建议采用以下架构:
- 多节点集群 :使用 Docker Swarm 或 Kubernetes
- 共享存储 :配置 NFS 或 Ceph 作为持久化存储
- 负载均衡 :前端配置 HAProxy 或 Nginx
9.2 监控方案
推荐监控指标及工具:
| 监控项 | 推荐工具 | 采集频率 |
|---|---|---|
| 容器资源使用 | cAdvisor | 15s |
| 主机指标 | Node Exporter | 15s |
| 日志收集 | Fluentd | 实时 |
| 告警 | Prometheus Alertmanager | 实时 |
10. 迁移与兼容性
10.1 从旧版本迁移
从 Docker 旧版本迁移到 26.x 的注意事项:
-
数据迁移 :
# 停止旧版本 systemctl stop docker # 备份数据 tar -czvf /var/lib/docker-backup.tar.gz /var/lib/docker # 安装新版本后恢复 tar -xzvf /var/lib/docker-backup.tar.gz -C / -
配置调整 :
- 检查废弃参数
- 更新存储驱动配置
- 验证网络配置
10.2 与其他组件集成
Docker 26 与常见组件的兼容性:
| 组件 | 兼容性 | 注意事项 |
|---|---|---|
| Kubernetes | 1.29+ | 需使用 cri-dockerd |
| CI/CD工具 | 全兼容 | 无特殊要求 |
| 监控系统 | 全兼容 | 可能需要更新插件 |
在实际部署中,我们发现使用 CentOS 8 的 RPM 包在 openEuler 22.03-LTS 上安装 Docker 26 是可行的,但需要特别注意依赖关系的处理。建议在测试环境充分验证后再部署到生产环境。
更多推荐



所有评论(0)