在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0,我踩过的那些坑都帮你填平了
在国产麒麟V10 ARM服务器上离线部署Docker 26.1.0的实战指南麒麟V10作为国产操作系统的代表在信创领域占据重要地位。当我们需要在ARM架构的麒麟V10服务器上部署Docker时往往会遇到一些特有的挑战。本文将分享我在实际项目中的完整部署经验特别是针对离线环境的特殊处理方式。1. 环境准备与依赖检查在开始安装前我们需要对系统环境进行全面检查。首先确认系统版本nkvers这个命令会显示详细的系统信息包括内核版本和发行版信息。麒麟V10 SP3通常与CentOS 8兼容这是我们后续操作的重要基础。关键依赖检查清单确保系统已安装yum-utils工具包检查系统架构是否为aarch64ARM64确认系统时间同步正常检查磁盘空间建议至少预留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.jsonmkdir -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.cgroupdriversystemd] } EOF systemctl restart docker6. containerd与CRI配置对于需要Kubernetes集成的环境需要额外配置containerdvi /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日志和系统资源使用情况是个好习惯。