1. 银河麒麟V10SP3Server环境准备
在国产化操作系统银河麒麟V10SP3Server上部署Docker环境,首先要做好基础环境检查。我遇到过不少因为系统版本或架构不匹配导致的安装失败案例,所以建议先花5分钟做好以下准备工作。
通过终端执行cat /etc/os-release查看系统详细信息时,你会看到类似这样的输出:
NAME="Kylin Linux Advanced Server" VERSION="V10 (SP3)" ID=kylin处理器架构检查是很多人容易忽略的关键步骤。在x86_64架构的机器上执行uname -p会显示"x86_64",而国产飞腾等ARM架构芯片会显示"aarch64"。曾经有团队在飞腾服务器上误装了x86版本的Docker,结果折腾了半天才发现问题。这里分享一个快速记忆口诀:"64位x86下划线,ARM架构aarch"。
提示:建议在安装前用
free -h检查内存,Docker至少需要2GB可用内存才能稳定运行。如果是在虚拟机环境,记得给swap分区留足空间。
2. 离线安装包获取与校验
离线环境最大的挑战就是依赖关系处理。我整理了几个可靠资源获取途径:
- 通过有网络的同架构机器从Docker官网下载
- 从可信的镜像站获取适配麒麟系统的版本
- 联系麒麟OS技术支持获取定制包
以docker-28.0.1.tgz为例,下载后务必做完整性校验:
sha256sum docker-28.0.1.tgz对比官网公布的校验值,这一步能避免很多安装过程中的诡异问题。曾经有个金融客户因为安装包传输过程中损坏,导致服务注册失败,浪费了整整一天排查时间。
对于docker-compose,要注意区分不同架构的版本。常见的命名规则是:
- linux-x86_64(Intel/AMD芯片)
- linux-aarch64(华为鲲鹏、飞腾等)
3. Docker引擎安装实战
解压安装包时,推荐使用tar -zxvf docker-28.0.1.tgz -C /tmp先解压到临时目录检查内容。我遇到过解压后缺少dockerd的情况,提前检查能省去后续麻烦。
文件部署到/usr/bin时有个重要细节:当系统提示覆盖runc时一定要选"n"。这是因为麒麟系统自带的runc可能包含安全补丁,盲目覆盖会导致兼容性问题。实际操作示例:
mv docker/* /usr/bin/ # 遇到覆盖提示时输入n启动服务时如果直接运行dockerd可能会遇到cgroup报错。这时候可以试试:
dockerd --storage-driver=overlay2实测在麒麟系统上overlay2的兼容性最好。如果看到"API listen on /var/run/docker.sock"的日志,说明服务已正常启动。
4. Systemd服务配置技巧
创建docker.service文件时,建议放在/etc/systemd/system/目录下。这里分享一个优化过的服务配置模板:
[Unit] Description=Docker with Kylin Modifications After=network.target [Service] ExecStart=/usr/bin/dockerd --iptables=false Restart=always LimitNOFILE=1048576关键修改点:
- 关闭iptables避免与麒麟防火墙冲突
- 调高文件描述符限制
- 简化依赖关系
执行systemctl daemon-reload后,建议先用systemctl status docker查看状态,而不是直接启动。有一次我发现服务配置错误导致启动超时,就是通过status命令提前发现的。
5. Docker-Compose离线部署
docker-compose的安装要注意权限问题。我推荐这样操作:
cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose chmod 755 /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/三步走策略能确保在任何PATH环境下都能调用。验证时别只用-v参数,最好实际运行个简单yml文件测试。
6. 常见问题解决方案
问题1:cgroup报错解决方法:在/etc/docker/daemon.json中添加:
{ "exec-opts": ["native.cgroupdriver=systemd"] }问题2:存储驱动不兼容实测在银河麒麟上推荐配置:
dockerd --storage-driver=overlay2 --selinux-enabled=false问题3:端口冲突检查已占用端口:
netstat -tulnp | grep -E '2375|2376'有次客户环境遇到docker.sock权限问题,最终发现是SELinux导致。临时解决方案:
chmod 666 /var/run/docker.sock但生产环境建议配置正规的SELinux策略。
7. 性能优化建议
在国产化环境中,我总结出几个有效优化点:
- 日志轮转配置:
/etc/docker/daemon.json中配置: "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }- 镜像存储路径调整:
dockerd --data-root /opt/docker- 网络性能优化: 禁用IPv6可以提升约15%的网络吞吐量:
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf在某个政务云项目中,通过这些优化使容器启动时间从8秒缩短到3秒。特别是修改data-root路径到高速存储设备,效果非常明显。