麒麟 V10 (x86_64) 离线/联网部署 Docker 26.1.4 与 MaxKB v2.10 LTS 实战指南
麒麟 V10 (x86_64) 离线/联网部署 Docker 26.1.4 与 MaxKB v2.10 LTS 实战指南
概述
本文档总结了在银河麒麟高级服务器操作系统 V10 (Halberd, x86_64) 上,由于系统自带的 Docker 版本过老(18.09.0)且存在组件冲突,如何通过静态二进制包手动升级 Docker 至 26.1.4,手动安装 Docker Compose 插件,并最终成功部署 MaxKB v2.10 LTS 离线包的完整方案。
第一阶段:Docker 环境准备与升级
1. 下载并解压 Docker 静态二进制包
由于官方一键脚本不识别 kylin 发行版,且直接配 CentOS 源容易引发依赖冲突,使用静态二进制包是最稳妥的方式。
bash
cd /tmp
# 如果直接 wget 官方地址遇到 SSL 错误,请使用国内镜像源:
wget https://mirror.nju.edu.cn/docker-ce/linux/static/stable/x86_64/docker-26.1.4.tgz
# 或使用:wget https://mirrors.huaweicloud.com/docker-ce/linux/static/stable/x86_64/docker-26.1.4.tgz
# 解压并移动可执行文件到系统路径
tar -zxvf docker-26.1.4.tgz
sudo mv docker/* /usr/bin/
2. 配置 Docker 与 Containerd 的 Systemd 服务
麒麟自带的旧版 docker-engine 没有独立的 containerd 服务,必须手动创建。
创建 Docker 服务文件:
bash
sudo vi /usr/lib/systemd/system/docker.service
写入以下内容:
ini
[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=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
创建 Containerd 服务文件:
bash
sudo vi /usr/lib/systemd/system/containerd.service
写入以下内容:
ini
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
3. 解决 runc 版本冲突 (关键步骤)
麒麟系统默认在 /usr/local/bin/runc 下存在旧版 runc (1.0.0-rc3),其优先级高于 Docker 新版自带的 /usr/bin/runc,会导致后续运行容器时报 permission denied。必须强制覆盖:
bash
# 备份旧版并覆盖
sudo mv /usr/local/bin/runc /usr/local/bin/runc.bak
sudo cp /usr/bin/runc /usr/local/bin/runc
sudo chmod +x /usr/local/bin/runc
# 验证版本,确保输出为 1.1.x
runc --version
4. 启动 Docker 服务
bash
sudo systemctl daemon-reload
sudo systemctl enable --now containerd
sudo systemctl enable --now docker
# 验证版本 (Server 端应显示 26.1.4)
docker version
5. 配置镜像加速器 (按需)
编辑 /etc/docker/daemon.json,填入可用的国内加速器:
json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io"
]
}
重启 Docker:sudo systemctl restart docker。
6. 离线安装 Docker Compose 插件
由于 GitHub 直连下载可能异常,建议手动下载 docker-compose-linux-x86_64 二进制文件并上传至服务器,或通过可用镜像源下载。
bash
sudo mkdir -p /usr/local/lib/docker/cli-plugins
# 将下载好的文件放置于此目录并重命名
sudo mv docker-compose-linux-x86_64 /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
# 验证
docker compose version
第二阶段:清理环境与准备部署
1. 释放冲突端口 (5432)
MaxKB 离线包自带 PostgreSQL 容器,需占用宿主机 5432 端口。如宿主机已存在 PG 服务,需将其卸载或修改端口。本文档采用直接卸载无用 PG 的方案:
bash
# 停止并禁用自带的 PG 服务 (视具体服务名而定)
sudo systemctl stop postgresql
sudo systemctl disable postgresql
sudo yum remove postgresql* -y
# 验证 5432 端口已释放 (无回显即为释放)
sudo ss -tulnp | grep 5432
2. 清理残留容器
如果之前部署失败过,需要清理卡在 Created 状态的旧容器:
bash
docker rm -f maxkb pgsql redis
第三阶段:离线部署 MaxKB
1. 解压并运行安装脚本
将 maxkb-v2.10.x-lts-x86_64-offline-installer.tar.gz 放置于 /opt 目录并执行安装:
bash
cd /opt
tar -zxvf maxkb-v2.10.8-lts-x86_64-offline-installer.tar.gz
cd maxkb-v2.10.8-lts-x86_64-offline-installer
# 执行安装
bash install.sh
注:安装脚本底层不使用标准的 docker-compose.yml,而是调用 mkctl 脚本直接操作 Docker API 拉起容器。
2. 验证状态与访问
bash
mkctl status
# 确保 maxkb, pgsql, redis 三个容器状态为 Up (可能需要等待几十秒初始化)
Web 访问:
- URL:
http://<宿主机IP>:8080 - 默认账号:
admin - 默认密码:
MaxKB@123..
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)