银河麒麟服务器环境下基于Docker的HTTP服务部署与端口映射实战

张开发
2026/4/3 21:13:24 15 分钟阅读
银河麒麟服务器环境下基于Docker的HTTP服务部署与端口映射实战
1. 银河麒麟服务器环境准备在国产化操作系统浪潮中银河麒麟高级服务器操作系统凭借其安全稳定的特性已经成为关键基础设施领域的首选。我最近在V10 SP3版本上实测了Docker容器化部署方案整个过程比预想的要顺畅许多。先带大家看看基础环境配置要点执行nkvers命令查看系统版本时你会看到类似这样的信息输出############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Halberd) Kernel: 4.19.90-89.19.v2401.ky10.aarch64 Build: Kylin Linux Advanced Server release V10 SP3 2403/(Halberd)-aarch64-Build20/20240426 #################################################这里有个细节要注意银河麒麟默认会安装docker-runc和podman组件我们需要先做清理。执行卸载命令时系统会提示移除6个关联组件大约释放91MB空间yum remove docker-runc安装Docker 18.09版本时推荐使用官方提供的ks10-adv-updates源。这个版本经过麒麟团队特别适配在稳定性测试中表现优异。安装完成后别忘记启动服务并设置开机自启systemctl start docker systemctl enable docker2. Docker镜像定制化实战2.1 基础镜像导入技巧银河麒麟的Docker镜像文件通常以.tar.xz格式分发使用docker load命令导入时要注意磁盘空间。我遇到过镜像层解压失败的情况后来发现是/tmp分区空间不足。建议提前检查存储空间df -h /var/lib/docker导入成功后用docker images命令会看到类似这样的输出REPOSITORY TAG IMAGE ID CREATED SIZE kylin-server-10-sp1-0518-aarch b20 df7a9105d15e 3 years ago 411MB2.2 容器化HTTP服务部署启动容器时务必加上--privilegedtrue参数否则systemd服务无法正常运行。这个坑我踩过三次才明白原因docker run --privilegedtrue --name kylin-test1 -it df7a9105d15e /sbin/init进入容器安装httpd服务时可能会遇到locale报错。这是容器环境变量缺失导致的不影响实际使用。安装完成后要特别注意服务启动顺序systemctl enable httpd systemctl start httpd3. 镜像封装与端口映射3.1 容器转镜像的黄金法则将运行中的容器commit为镜像时建议先停止容器以保证文件系统一致性。我曾遇到过因容器运行状态导致的镜像损坏问题docker stop 395e9257b616 docker commit 395e9257b616 kylin-sp1-0518-http新生成的镜像体积会明显增大从411MB增加到549MB这是因为包含了我们安装的所有服务和配置文件。可以通过docker history命令查看各层变化docker history kylin-sp1-0518-http3.2 端口映射的三种姿势在银河麒麟环境下端口映射要特别注意SELinux策略。推荐使用以下三种方式基础映射-p 8001:80随机端口-p 80指定IP-p 192.168.1.100:8001:80实测这个命令最稳定docker run --privilegedtrue -d -p 8001:80 --name kylin-test2 kylin-sp1-0518-http:latest /sbin/init4. 服务验证与排错指南4.1 健康检查双保险除了用curl测试更推荐组合使用这两种验证方式# 检查容器日志 docker logs kylin-test2 # 进入容器查看服务状态 docker exec -it kylin-test2 systemctl status httpd4.2 常见问题解决方案遇到端口无法访问时按这个顺序排查检查防火墙规则firewall-cmd --list-ports验证容器网络模式docker inspect kylin-test2 | grep NetworkMode测试容器内服务docker exec kylin-test2 curl localhost:80我在测试中发现银河麒麟的默认防火墙规则会拦截Docker映射端口。添加放行规则即可解决firewall-cmd --add-port8001/tcp --permanent firewall-cmd --reload

更多文章