Administrator
Published on 2025-12-24 / 28 Visits
0
0

银河麒麟操作系统 v10 中离线安装 Docker全指南

在真实的政企、科研、专网环境里,
“能不能装 Docker”从来不是技术问题,而是合规与工程问题。

外网不可达、源不可用、镜像要归档、版本要可控、升级要可审计,才是银河麒麟 V10 环境里 Docker 的真实使用场景。

这篇文章,不教你“最快装 Docker”,而是教你:
👉 如何在银河麒麟 V10 下,离线、可交付、可长期运维地安装 Docker,并且选对版本。

一、为什么在银河麒麟 V10 上“必须考虑离线安装 Docker”

1.1、真实环境背景(你一定不陌生)

在以下环境中,在线安装 Docker 基本不可行

  • 涉密 / 商密网络

  • 科研网、实验专网

  • 内外网物理隔离

  • 国产化替代环境(禁止直连公网仓库)

常见现象包括:

  • yum/apt 源不可用

  • Docker 官方仓库被封

  • 只能通过 U 盘 / 受控介质拷贝文件

因此,离线安装不是“备选方案”,而是“唯一方案”。


1.2、为什么偏偏是 Docker?

因为在国产化环境里,Docker 已经成为:

  • Zabbix / Prometheus / ELK 的首选运行方式

  • 数据中台、运维平台的事实标准

  • 应用“解耦 + 可迁移”的关键基础

不会 Docker,等于被挡在现代运维体系之外。


二、先把 Docker 的“版本体系”讲清楚

很多人装 Docker 出问题,根源不是麒麟,而是版本认知错误。

2.1、Docker 发展脉络简化版

Docker 早期是一整套:

docker = 客户端 + daemon + runtime + 镜像工具

后来拆分为三层:

层级

说明

Docker CLI

docker 命令

Docker Engine

dockerd 守护进程

Container Runtime

containerd / runc


2.2、截止目前,Docker 有哪些主流版本线?

这里说的是 Docker Engine(不是 Docker Desktop)

(1)Docker CE(Community Edition)

这是最常用、最推荐的一条线。

大版本

特点

20.10.x

老牌稳定,政企最常见

23.0.x

新架构,功能增强

24.x

当前主流,新特性较多

25.x

较新,对老系统兼容性需验证


(2)Docker EE(已逐步并入商业订阅)

  • 原本是企业版

  • 现在基本不单独推广

  • 国产环境 极少使用


(3)containerd + nerdctl(非 Docker)

  • Kubernetes 原生方案

  • 命令与 Docker 不完全一致

  • 不适合“传统运维团队”直接替代 Docker


2.3、一个结论先给出来

在银河麒麟 V10 离线环境下:

首选:Docker CE 20.10.x 或 23.0.x
⚠️ 24.x 以上需充分验证
❌ 不建议追新版本


三、为什么“不是越新越好”?版本差异一次讲明白

3.1、Docker 20.10.x(强烈推荐)

优点:

  • 稳定,BUG 已被大量踩平

  • 对内核版本要求相对友好

  • 政企、科研网大量生产案例

缺点:

  • 功能不是最新

📌 一句话评价:

“保守但可靠,最适合国产化离线环境”


3.2、Docker 23.x

优点:

  • 性能、日志、网络有改进

  • Compose v2 集成度更高

风险点:

  • 对 systemd、cgroup 依赖更强

  • 个别麒麟内核需验证

📌 适合人群:

  • 有一定 Docker 运维经验

  • 能接受测试成本的团队


3.3、Docker 24 / 25.x(谨慎)

潜在问题:

  • 新特性多,但回归测试少

  • 对内核特性依赖更激进

  • 国产内核适配滞后风险

📌 结论:

不适合“第一次在麒麟上规模部署 Docker”

四、银河麒麟 V10 离线安装 Docker 的“推荐路线图”

4.1、推荐组合(企业稳态)

组件

推荐版本

Docker Engine

20.10.24

containerd

随 Docker CE

runc

随 Docker CE

docker-compose

v2.x 插件版


4.2、查看系统版本

[root@localhost opt]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Lance)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Lance)"
ANSI_COLOR="0;31"
[root@localhost opt]#

4.3、查看Linux内核版本(3.10以上)

[root@localhost opt]# uname -r
4.19.90-52.22.v2207.ky10.aarch64
[root@localhost opt]# uname -a
Linux localhost.localdomain 4.19.90-52.22.v2207.ky10.aarch64 #1 SMP Tue Mar 14 11:52:45 CST 2023 aarch64 aarch64 aarch64 GNU/Linux
[root@localhost opt]# 

4.4、查看 iptabls 版本(1.4以上)

[root@localhost opt]# iptables --version
iptables v1.8.5 (legacy)

4.5、判断处理器架构

[root@localhost opt]# uname -p
aarch64
[root@localhost opt]# 

可以看到,系统处理器架构为ARM架构;如果为x86 架构的,则会显示x86_64;

五、离线安装方案一:官方二进制包(最通用)

5.1、在可联网机器下载 Docker 二进制包

https://download.docker.com/linux/static/stable/x86_64/

https://download.docker.com/linux/static/stable/aarch64/

wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
wget https://download.docker.com/linux/static/stable/aarch64/docker-20.10.24.tgz

(ARM 架构请换 aarch64)


5.2、拷贝到银河麒麟服务器

tar zxvf docker-20.10.24.tgz
cp -a  docker/* /usr/bin/

验证:

docker version

5.3、配置 systemd 服务

创建 /etc/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
LimitNOFILE=infinity
LimitNPROC=infinity

[Install]
WantedBy=multi-user.target

启动:

systemctl daemon-reload
systemctl enable docker --now

六、离线安装方案二:离线 rpm/deb 包(受限但规范)

适用场景

  • 需要符合包管理规范

  • 要求可审计、可卸载

缺点

  • 依赖包多

  • 麒麟版本差异较大

  • 成本明显高于二进制方案

📌 实战建议:

除非单位明确要求,否则优先二进制方案


七、离线环境下 Docker 的“必做三件事”

7.1、配置镜像仓库(如果文件不存在要手动创建)

Docker 默认从:

https://registry-1.docker.io

拉取镜像,也就是 Docker Hub 官方源

在国内环境常见问题:

  • 连接慢

  • 随机超时

  • 有时直接不可达

  • CI/CD 构建不稳定

📌 结论

不配置镜像源,Docker 在国内环境几乎不可用。

路径:/etc/docker/daemon.json


国内常用 Docker 镜像仓库一览

以下均为**“镜像加速器”**,本质是 Docker Hub 的缓存/代理。

阿里云镜像加速器(最常用)

  • 稳定性最好

  • 速度快

  • 强烈推荐

格式(需要你自己的加速地址):

https://<你的ID>.mirror.aliyuncs.com

👉 登录阿里云控制台 → 容器镜像服务 → 镜像加速器
即可看到你的专属地址。


腾讯云镜像加速器

https://mirror.ccs.tencentyun.com

特点:

  • 不需要账号

  • 速度尚可

  • 适合作为备用


网易云镜像

https://hub-mirror.c.163.com

特点:

  • 老牌镜像

  • 覆盖面广

  • 稳定性一般(建议做备用)


DaoCloud 镜像加速器

https://mirror.daocloud.io

特点:

  • DevOps 圈常用

  • 对常见镜像支持好


中科大镜像(部分环境可用)

https://docker.mirrors.ustc.edu.cn

⚠️ 注意:

  • 有时对外访问受限

  • 企业环境需提前测试

标准配置方式(daemon.json,推荐)

1️⃣ 配置文件路径

/etc/docker/daemon.json

如果文件不存在,直接创建即可


2️⃣ 推荐「多镜像源」配置示例

{
  "registry-mirrors": [
    "https://<你的ID>.mirror.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.daocloud.io"
  ],
  "data-root": "/data/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  },
  "exec-opts": ["native.cgroupdriver=systemd"]
}

解释几句关键项:

参数

作用

registry-mirrors

镜像加速器列表(按顺序尝试)

data-root

Docker 数据目录(避免根分区爆盘)

log-opts

防止容器日志无限增长

cgroupdriver

与 systemd 兼容(麒麟必配)


3️⃣ 重启 Docker 生效

systemctl daemon-reload
systemctl restart docker

如何验证镜像仓库是否生效?

1️⃣ 查看 Docker 配置

docker info | grep -A5 "Registry Mirrors"

看到类似输出即为成功:

Registry Mirrors:
 https://xxxx.mirror.aliyuncs.com/
 https://mirror.ccs.tencentyun.com/

2️⃣ 实际拉镜像测试

docker pull busybox:latest

如果:

  • 下载速度明显提升

  • 不再频繁 timeout

说明配置生效。

保存后,执行:systemctl daemon-reload

7.2、镜像必须归档(不是临时下载)

docker save nginx:1.26 -o nginx-1.26.tar
sha256sum nginx-1.26.tar > nginx-1.26.tar.sha256

这是合规与可追溯的关键。


7.3、禁止“随手升级 Docker”

  • Docker 升级 = 全部容器风险

  • 国产环境 必须版本冻结


八、安装 docker-compose

Docker 是发动机,docker-compose 是“多容器启动编排器”
👉 不是必须装,但一旦涉及多个服务,几乎离不开


8.1、先弄清楚:Docker 本身是干什么的?

Docker = 单个容器的运行引擎

你用 Docker,平时干的事情是:

docker pull nginx
docker run -d -p 80:80 nginx

只擅长一件事

👉 管理“一个容器”的生命周期

  • 拉镜像

  • 启动容器

  • 停止容器

  • 删除容器


8.2、那 docker-compose 是干嘛的?

docker-compose = 多容器的“统一说明书 + 启动器”

当你要启动 一整套系统 时,Docker 原生命令就开始反人类了


典型真实场景(你一定见过)

Zabbix 为例,至少包含:

  • zabbix-server

  • zabbix-web

  • mysql / postgres

  • agent

  • 端口、网络、数据目录、启动顺序

不用 docker-compose 的下场

docker run mysql ...
docker run zabbix-server ...
docker run zabbix-web ...
  • 命令长

  • 顺序容易错

  • 端口/路径写错一次就翻车

  • 换一台服务器要重写一遍


用 docker-compose 后

你只需要一个文件:

docker-compose.yml

然后一句命令:

docker compose up -d

直接 GitHub 下载:docker/compose选择自己喜欢的版本,这里直接拉满,下载当前最新的版本:v2.24.0

https://github.com/docker/compose/releases

这里根据自己的架构,选择对应的包,下载就好了。

cp docker-compose-linux-aarch64  /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

查看版本

[root@localhost opt]# docker-compose -v
Docker Compose version v2.24.0
[root@localhost opt]# 

九、常见踩坑总结

问题

原因

Docker 起不来

内核参数不支持

容器网络异常

iptables / nftables 冲突

cgroup 报错

版本与内核不匹配

日志爆盘

未限制 log-size


十、一句话总结

在银河麒麟 V10 上装 Docker,
真正的难点从来不是“怎么装”,
而是:

选对版本、离线可控、长期稳定、出了事能兜底。


Comment