麒麟 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..
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐