飞腾/鲲鹏服务器上,openEuler 20.03 SP3离线安装Docker 20.10.23保姆级避坑指南
飞腾/鲲鹏服务器离线部署Docker 20.10.23全流程实战
在国产化技术栈快速发展的今天,基于飞腾(Phytium)或鲲鹏(Kunpeng)处理器的服务器已成为关键行业的基础设施选择。然而,当这些硬件平台搭载openEuler操作系统时,标准软件生态的兼容性问题往往成为部署过程中的"暗礁"。本文将以Docker 20.10.23版本为例,深入解析在openEuler 20.03 SP3系统上实现离线安装的完整技术路径,特别针对国产CPU架构特有的依赖冲突问题提供解决方案。
1. 环境预配置与依赖检查
1.1 系统服务调整
在国产化环境中,安全模块与网络服务的默认配置往往与容器运行时存在隐性冲突。执行以下操作前,建议通过cat /proc/cpuinfo确认处理器架构为aarch64(鲲鹏/飞腾):
# 停用防火墙服务(后续章节提供共存方案) systemctl stop firewalld systemctl disable firewalld # 临时关闭SELinux setenforce 0对于生产环境,建议永久禁用SELinux以避免容器运行时异常。编辑/etc/selinux/config文件,确保以下配置:
SELINUX=disabled1.2 内核参数优化
容器网络需要特定的内核参数支持,在飞腾/鲲鹏平台上这些设置尤为重要:
cat > /etc/sysctl.d/docker.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF # 立即生效 sysctl -p /etc/sysctl.d/docker.conf注意:若出现
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables错误,需先加载br_netfilter模块:modprobe br_netfilter lsmod | grep br_netfilter
2. 离线安装包获取与部署
2.1 适配版本选择
针对飞腾/鲲鹏架构,必须选择ARM64版本的Docker静态包。官方仓库提供的历史版本路径为:
https://download.docker.com/linux/static/stable/aarch64/关键版本兼容性对照表:
| Docker版本 | openEuler兼容性 | 备注 |
|---|---|---|
| 20.10.23 | 最佳 | 已验证稳定运行 |
| 23.0.0+ | 部分功能异常 | 需高版本内核支持 |
| 19.03.x | 兼容但功能陈旧 | 不推荐生产环境使用 |
下载命令示例(需通过可联网设备中转):
wget https://download.docker.com/linux/static/stable/aarch64/docker-20.10.23.tgz2.2 二进制文件部署
将下载的压缩包传输到目标服务器后,执行以下步骤:
# 解压并部署二进制文件 tar -zxvf docker-20.10.23.tgz cp docker/* /usr/bin/ # 验证关键组件 dockerd --version containerd --version3. 系统服务深度定制
3.1 服务单元配置
在/etc/systemd/system/docker.service中写入以下内容,特别针对国产硬件优化:
[Unit] Description=Docker Application Container Engine After=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd \ --containerd=/var/run/containerd/containerd.sock \ --iptables=false \ --log-driver=json-file \ --log-opt=max-size=100m ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always [Install] WantedBy=multi-user.target关键参数说明:
--iptables=false:避免与firewalld冲突--log-driver=json-file:确保日志持久化--log-opt=max-size=100m:控制日志体积
3.2 服务启动与验证
# 重载服务配置 systemctl daemon-reload # 设置开机自启 systemctl enable docker # 启动服务 systemctl start docker # 验证安装 docker info | grep -E 'Server Version|OSType'预期输出应包含:
Server Version: 20.10.23 OSType: linux4. 防火墙与容器网络共存方案
4.1 安全策略配置
在需要启用firewalld的场景下,需添加特定规则:
# 重新启用防火墙 systemctl enable --now firewalld # 添加Docker接口到信任区域 firewall-cmd --permanent --zone=trusted --add-interface=docker0 firewall-cmd --permanent --zone=trusted --add-port=2376/tcp firewall-cmd --reload4.2 容器网络调优
编辑/etc/docker/daemon.json实现网络优化:
{ "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"], "iptables": false, "bip": "172.26.0.1/16", "fixed-cidr": "172.26.0.0/24" }配置生效命令:
systemctl restart docker重要:修改网络配置后,需清理已有容器网络:
docker network prune -f
5. 常见故障排查指南
5.1 依赖缺失问题
典型错误nothing provides container-selinux >= 2:2.74的解决方案:
查询已安装的container-selinux版本:
rpm -qa | grep container-selinux手动下载兼容版本(以2.73为例):
wget http://mirror.centos.org/centos/8/BaseOS/aarch64/os/Packages/container-selinux-2.173.0-1.module_el8.5.0+911+fd420f5f.noarch.rpm强制安装:
rpm -ivh --nodeps container-selinux-2.173.0-1.module_el8.5.0+911+fd420f5f.noarch.rpm
5.2 容器启动失败处理
当遇到failed to start containerd: timeout waiting for containerd to start时:
检查containerd日志:
journalctl -u containerd -n 50 --no-pager重置容器运行时状态:
rm -rf /var/lib/containerd/* systemctl restart containerd docker
在飞腾FT-2000+/64处理器环境中,曾遇到容器启动时出现illegal instruction错误,可通过以下方式缓解:
echo 1 > /proc/sys/abi/cp15_barrier