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

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

bash 复制代码
sudo vi /usr/lib/systemd/system/docker.service

写入以下内容:

ini

bash 复制代码
[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

bash 复制代码
[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

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

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

bash 复制代码
{
  "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

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

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

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

bash 复制代码
mkctl status
# 确保 maxkb, pgsql, redis 三个容器状态为 Up (可能需要等待几十秒初始化)

Web 访问:

  • URL: http://<宿主机IP>:8080
  • 默认账号: admin
  • 默认密码: MaxKB@123..
相关推荐
Norna3 小时前
receive 取消了,TCP 为什么还在读:AnyIO 的一次背压修复
python
Ven%3 小时前
在魔搭 Notebook 容器里跑 Qwen Code:从零配置到省魔粒的完整实践
人工智能·python·ai·ai编程·modelscope
2401_885885043 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
执假以为真4 小时前
Python内存分析器memray的简单介绍
python
收纳过往4 小时前
数据库加索引的时机:慢查询日志说话
android·开发语言·数据库·python·低代码·rxjava
小鹿学程序4 小时前
市赛python学习
python
高洁015 小时前
知识图谱:结构化表达实体与关系的知识组织技术
人工智能·python·深度学习·机器学习·迁移学习
骊山道童5 小时前
第 1 周 LLM 原理与高效微调知识精讲手册
python
Metaphor6925 小时前
轻松使用 Python 将 RTF 转换为 Word(含批量转换与格式互转)
python·word·rtf