📝 背景与痛点

在国产化替代的浪潮中,统信UOS服务器版(UnionTech OS Server)的应用越来越广泛。然而,在实际运维中,我们经常会遇到内网服务器无法连接互联网的情况,此时想要安装Docker容器引擎就变得比较棘手。

特别是统信UOS Server 20通常基于Linux内核4.19,且架构多为ARM64(aarch64),如果盲目使用新版Docker,可能会遇到依赖库缺失或兼容性问题。

本文将详细介绍一种不依赖系统包管理器(YUM/APT),直接使用官方二进制包(Static Binaries)的离线安装方案,确保在无网环境下也能稳定运行Docker。

🎯 环境准备

  • 操作系统:统信UOS Server 20
  • 硬件架构:ARM64 (aarch64)
  • 内核版本:4.19.x
  • 安装方式:离线(无互联网连接)

📦 为什么选择 Docker 19.03?

在选择安装包时,我推荐使用 Docker 19.03.15 版本,而非最新的24.x版本,理由如下:

  1. 稳定性优先:19.03是Docker历史上最稳定的版本之一,经过了工业界大规模验证。
  2. 内核兼容:完美适配Linux 4.19内核,避免新版Docker对cgroup v2等新特性的强制依赖。
  3. 功能完备:满足绝大多数容器化需求,且对国产系统兼容性最好。

🚀 实操步骤

第一步:下载离线包

在一台可以上网的电脑上,下载对应架构的Docker二进制包。

  • 下载地址https://download.docker.com/linux/static/stable/aarch64/
  • 文件名docker-19.03.15.tgz

下载完成后,通过U盘或内网传输工具,将该文件上传到UOS服务器的任意目录(例如 /home/uos/)。

第二步:解压与安装

登录服务器,执行以下命令:

1
2
3
4
5
6
7
8
# 1. 解压文件
tar xzvf docker-19.03.15.tgz

# 2. 将二进制文件复制到系统执行路径
sudo cp docker/* /usr/bin/

# 3. 赋予执行权限
sudo chmod +x /usr/bin/docker*

第三步:配置Systemd服务

为了让Docker能作为系统服务管理,我们需要创建 docker.service 文件。

1
sudo vi /etc/systemd/system/docker.service

粘贴以下内容(注意:这是针对UOS/RHEL系系统的配置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=cgroup
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

第四步:启动服务

1
2
3
4
5
6
7
8
# 重新加载配置
sudo systemctl daemon-reload

# 启动Docker
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

✅ 验证安装

最后,检查Docker是否正常运行:

1
2
3
4
5
# 查看版本
docker version

# 运行测试镜像
sudo docker run hello-world

如果看到 Hello from Docker!,恭喜你,Docker已经成功在你的统信UOS服务器上运行了!

💡 常见问题

  • 报错 libltdl.so.7 缺失?
    统信UOS通常自带该库。如果提示缺失,需要在同版本系统上安装 libtool-ltdl 包,或寻找对应的离线RPM包进行安装。

  • 加载镜像时卡住?
    如果在加载大镜像(如MongoDB)时看起来卡在某一行,通常是后台正在解压层(Layer),请耐心等待几分钟,不要强制中断。


结语:
在信创环境下,有时候“求新”不如“求稳”。希望这篇教程能帮你解决内网部署Docker的燃眉之急。如果有其他问题,欢迎在评论区交流!