在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0的实战指南
麒麟V10作为国产操作系统的代表,在信创领域占据重要地位。当我们需要在ARM架构的麒麟V10服务器上部署Docker时,往往会遇到一些特有的挑战。本文将分享我在实际项目中的完整部署经验,特别是针对离线环境的特殊处理方式。
1. 环境准备与依赖检查
在开始安装前,我们需要对系统环境进行全面检查。首先确认系统版本:
nkvers这个命令会显示详细的系统信息,包括内核版本和发行版信息。麒麟V10 SP3通常与CentOS 8兼容,这是我们后续操作的重要基础。
关键依赖检查清单:
- 确保系统已安装yum-utils工具包
- 检查系统架构是否为aarch64(ARM64)
- 确认系统时间同步正常
- 检查磁盘空间(建议至少预留5GB)
对于离线环境,我们需要提前准备以下资源:
- Docker RPM包及其所有依赖
- 必要的系统工具包
- 备用仓库镜像配置
2. 清理旧版本与仓库配置
彻底清理旧版本是避免冲突的关键步骤:
yum remove docker \ containerd.io \ docker-runc \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine \ docker-compose-plugin \ docker-buildx-plugin由于是离线环境,我们需要特殊处理仓库配置。创建一个临时目录存放所有安装包:
mkdir -p /root/docker-rpm/3. 离线包获取与处理
在有网络连接的环境中,我们可以使用以下命令下载所有必需的RPM包:
yum install --downloadonly --downloaddir=/root/docker-rpm/ \ docker-ce-3:26.1.0-1.el8 \ docker-ce-cli-1:26.1.0-1.el8 \ docker-buildx-plugin-0.14.0-1.el8 \ docker-compose-plugin-2.6.0-3.el8下载完成后,将整个目录打包并传输到目标服务器。检查下载内容:
ls -l /root/docker-rpm/4. 离线安装与基础配置
在目标服务器上执行安装:
cd /root/docker-rpm rpm -Uvh --nodeps *.rpm安装完成后验证版本:
docker -v创建专用数据目录并配置daemon.json:
mkdir -p /data/docker cat > /etc/docker/daemon.json << EOF { "data-root": "/data/docker", "registry-mirrors": ["https://registry.docker-cn.com"] } EOF5. 系统集成与优化
设置systemd管理并启动服务:
systemctl enable docker systemctl start docker systemctl status docker针对麒麟系统的特殊优化配置:
cat >> /etc/docker/daemon.json << EOF { "exec-opts": ["native.cgroupdriver=systemd"] } EOF systemctl restart docker6. containerd与CRI配置
对于需要Kubernetes集成的环境,需要额外配置containerd:
vi /etc/containerd/config.toml找到并注释掉以下行:
# disabled_plugins = ["cri"]重启containerd服务:
systemctl restart containerd7. crictl端点配置
解决crictl端点冲突问题:
cat <<EOF | sudo tee /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF8. 验证与测试
完整验证安装结果:
docker info docker run hello-world crictl pods9. 常见问题排查
问题1:服务启动失败
- 检查日志:
journalctl -xe - 验证依赖:
ldd $(which dockerd)
问题2:镜像拉取失败
- 检查网络代理设置
- 验证仓库镜像配置
问题3:权限问题
- 将用户加入docker组:
usermod -aG docker $USER - 重启服务使更改生效
在实际部署中,我发现麒麟V10对某些依赖库的版本要求较为严格。建议在测试环境充分验证后再部署到生产环境。对于长期运行的服务器,定期检查Docker日志和系统资源使用情况是个好习惯。