全系列 Linux 兼容的 Docker 最新版 离线一键安装包

docker-universal-installer 项目介绍

版本
:v0.1.0(2026-09-11)
定位
:跨发行版 Linux 离线一键安装 Docker 的部署包项目


一、项目概述

docker-universal-installer 是一个面向无外网 / 内网隔离 / 国产化环境的 Docker 离线部署方案。它将 Docker 29.7.2 全栈运行时(dockerd、CLI、containerd、runc 等 8 个二进制)与 Docker Compose v5.5.0 打成单一离线包,在目标机器上解压后一条命令即可完成预检、安装、配置、启动与冒烟测试,全程不依赖 yum/apt 软件源,也不依赖系统 glibc。

适用于:麒麟 V10、OpenEuler、Anolis OS、CentOS/RHEL 7+、Ubuntu、Debian、UOS、Deepin、openSUSE 等主流 systemd 发行版,覆盖 x86_64 与 aarch64(含鲲鹏、飞腾、Graviton)双架构。


二、核心特性

特性 说明
离线一键安装 单包分发,bash install.sh 一条命令完成全部安装流程
不依赖系统 glibc Docker 与 Compose 均为静态链接二进制,弱化对系统库版本的要求
双架构覆盖 x86_64 + aarch64,适配主流服务器与国产 ARM 平台
国内镜像源预置 daemon.json 内置 6 个国内 Docker Hub 镜像源,拉镜像更快更稳
Compose 真二进制 49MB 官方静态 Compose,非 shim;docker compose(空格)与 docker-compose(连字符)两种写法同时可用
可重入 / 可回滚 支持 --force 强制覆盖、--uninstall 卸载、--rollback 回滚
保留用户配置 systemd drop-in、daemon.json、镜像数据在重装 / 升级时不被破坏
自动冲突处理 检测 podman/buildah 冲突并提示,可加 --remove-podman 自动卸载
完整冒烟测试 安装结束自动执行版本与连通性检查,失败即明确报错

三、组件清单与版本

组件 版本 备注
docker(CLI) 29.7.2 静态二进制
dockerd 29.7.2 静态二进制
containerd v2.3.3 静态二进制
runc 1.x 静态二进制
docker-init / docker-proxy / ctr 29.7.2 静态二进制
containerd-shim-runc-v2 29.7.2 静态二进制
Docker Compose v5.5.0 49MB 静态二进制

以上为 x86_64 与 aarch64 各一份,每架构 8 个二进制,包内合计 16 个。


四、支持范围

架构:x86_64、aarch64(华为鲲鹏 / 飞腾 / AWS Graviton 等)

发行版(systemd 系):

  • CentOS 7+ / RHEL 7+
  • Anolis OS 8.x / OpenEuler
  • Kylin V10 / UOS / Deepin
  • Ubuntu 16.04+ / Debian 9+
  • openSUSE Leap 15

前置条件:内核 ≥ 3.10、systemd 已运行、overlay 模块可用、root 权限。


五、目录结构

docker-universal-installer/

├── README.md                  # 项目说明(根目录)

├── VERSION                    # 版本号:0.1.0

├── Makefile                   # build / pack / docs / verify / clean

├── install.sh                 # 安装入口(= src/install.sh)

├── uninstall.sh               # 卸载入口(= src/uninstall.sh)

│

├── src/                       # 运行时部署包源码

│   ├── install.sh             # 主安装脚本

│   ├── uninstall.sh           # 卸载脚本

│   ├── README.md              # 运行时包文档(部署现场查看)

│   ├── VERSION

│   ├── bin/                   # x86\_64 静态二进制(8 个)

│   ├── bin-arm64/             # aarch64 静态二进制(8 个)

│   ├── compose/

│   │   └── docker-compose     # Compose v5.5.0(49MB)

│   ├── systemd/

│   │   ├── containerd.service

│   │   ├── docker.service

│   │   └── docker.socket

│   └── config/

│       └── daemon.json        # 默认配置(6 个国内镜像源)

│

├── docs/                      # 文档与渲染产物

│   ├── CHANGELOG.md           # 版本变更日志

│   ├── blog.html              # 浏览器预览版

│   └── wordpress.html         # WordPress 粘贴版(内联样式)

│

├── tools/

│   └── md2wp.py               # Markdown → HTML 转换器

│

└── dist/                      # 打包产物

    └── docker-universal-installer-v0.1.0.tar.gz   (约 178MB)

六、快速使用

1. 拷贝到目标机器

\# 方式一:直接拷贝目录

scp -r docker-universal-installer root@\<host>:/root/

\# 方式二:传压缩包

scp docker-universal-installer-v0.1.0.tar.gz root@\<host>:/root/

ssh root@\<host> 'cd /root && tar xzf docker-universal-installer-v0.1.0.tar.gz'

2. 一键安装

cd /root/docker-universal-installer

sudo bash install.sh                        # 基础安装

sudo bash install.sh --with-compose         # 同时安装 docker compose

sudo bash install.sh --with-compose --remove-podman   # Anolis / RHEL 8 推荐组合

3. 安装选项

选项 作用
--with-compose 顺带安装 docker compose
--no-mirror 不写国内镜像源(使用默认 registry)
--force 强制覆盖已有 docker 安装
--remove-podman 自动卸载冲突的 podman /buildah
--update-system 先执行包管理器 update
--uninstall 卸载(保留 /var/lib/docker 镜像数据)
--rollback 回滚到上次安装前的状态
--help, -h 显示帮助

4. 安装后验证

docker --version        # Docker version 29.7.2

docker info             # Server / Storage Driver

docker ps               # 容器列表

docker run --rm hello-world

docker compose up -d    # 空格语法

docker-compose up -d    # 连字符语法,同一份二进制

5. 当前用户免 sudo 使用

sudo usermod -aG docker \$USER && newgrp docker

七、真实实施记录(仅展示Anolis OS 8.9 实测)

以下为在某服务器上的完整实施过程实录,验证了该部署包在国产 / 类 RHEL 发行版上的可用性。

7.1 部署环境

项目
操作系统 Anolis OS 8.9
架构 x86_64
内核 5.10.134-16.2.an8.x86_64
glibc 2.28(静态二进制不依赖,记录备查)
SELinux Disabled
iptables v1.8.5(nf_tables)
预置冲突包 podman、buildah(脚本检测到并给出提示)

7.2 安装过程实录

\[root@localhost \~]# tar -zxvf docker-universal-installer-v0.1.0.tar.gz

\[root@localhost docker-universal-installer]# bash install.sh --with-compose

脚本依次执行并通过以下阶段:

  1. 预检(preflight):root 权限、二进制齐全、内核 ≥ 3.10、命令检查、systemd 运行、overlay 模块、iptables、SELinux、podman/buildah 冲突检测(⚠ 提示存在 podman buildah,未影响安装)。
  2. 备份(backup):未发现已有 docker 二进制,无需备份。
  3. 停服(stop):停掉现有 docker /containerd。
  4. 部署二进制(install):8 个静态二进制安装到 /usr/bin/
  5. 部署 systemd 单元:containerd.service、docker.service、docker.socket 安装到 /lib/systemd/system/ 并 reload。
  6. 创建 docker 组
  7. 写入配置/etc/docker/daemon.json(含 6 个国内镜像源、overlay2、日志轮转、live-restore)。
  8. 部署 docker-compose/usr/local/bin/docker-compose + /usr/bin/docker-compose 软连接 + CLI 插件(同时支持两种语法)。
  9. 启动服务:containerd + docker 启动成功。
  10. 冒烟测试(smoke):全部通过。

7.3 验证结果

Docker version 29.7.2, build a7dcaa6

Docker version 29.7.2, build 6a43e3d          (dockerd)

containerd v2.3.3

Docker Compose version v5.5.0                 (两种写法均验证)

docker ps → 空列表正常返回

安装结论:✔ 安装完成,Docker 29.7.2 + containerd v2.3.3 + Compose v5.5.0 全部就绪;即使机器预置了 podman/buildah,未加 --remove-podman 参数也能正常安装成功(提示仅作警告)。

安装后信息

  • 备份目录:/var/lib/docker-universal-installer/backup
  • 安装日志:/var/log/docker-universal-installer-install.log
  • 卸载:bash install.sh --uninstall
  • 回滚:bash install.sh --rollback

八、安装流程

flowchart TD
    A[解压部署包] --> B[预检<br/>OS/架构/内核/systemd/overlay/iptables/SELinux/podman冲突]
    B --> C[备份已有 docker 二进制与配置]
    C --> D[停掉现有 docker / containerd]
    D --> E[部署 8 个静态二进制到 /usr/bin]
    E --> F[部署 systemd 单元并 reload]
    F --> G[创建 docker 组]
    G --> H[写入 /etc/docker/daemon.json<br/>6 个国内镜像源]
    H --> I{加 --with-compose?}
    I -- 是 --> J[部署 Compose 真二进制<br/>双语法可用]
    I -- 否 --> K
    J --> K[启动 containerd + docker<br/>并设置开机自启]
    K --> L[冒烟测试<br/>version / info / ps]
    L --> M[✔ 安装完成]

九、默认配置说明(daemon.json)

配置项 说明
registry-mirrors 6 个国内源 DaoCloud /dockerproxy/ USTC / 网易 / 百度 / 南京大学
storage-driver overlay2 默认存储驱动
log-driver json-file 日志驱动
log-opts max-size 100m / max-file 3 日志自动轮转,防止占满磁盘
live-restore true 守护进程重启时保留运行中的容器

十、常见问题

Q1:Anolis/RHEL/CentOS 报 yum 依赖冲突(如 container-selinux requires runc)?

本包用静态二进制,不走 yum 依赖链,直接 bash install.sh --with-compose --remove-podman 即可;若之前 yum 装失败留有脏状态,先 yum remove docker-ce docker-ce-cli containerd.io 清理再装。

Q2:docker pull 拉不到镜像?

检查 daemon.json 的 registry-mirrors;能直连 docker.io 时用 --no-mirror 重装。

Q3:报 Error initializing network controller

多为 iptables 缺失,RHEL 系 yum install -y iptables,Debian 系 apt install -y iptables

Q4:SELinux 阻止容器运行?

临时 setenforce 0;永久把 /etc/selinux/config 改为 permissive 后重启。

Q5:启动失败但 journalctl 无错误?

99% 是 systemd 单元缺少 Delegate=yes(dockerd 接管 cgroup 必需),本包已内置处理。

Q6:完全清理重装?

bash install.sh --uninstall

bash install.sh --rollback

bash install.sh --force --with-compose

\# 连数据一起清:rm -rf /var/lib/docker /etc/docker

十一、维护与反馈

开发侧构建命令

make            # 完整流程:pack + docs

make pack       # 只打包 → dist/docker-universal-installer-v0.1.0.tar.gz

make docs       # 只生成 HTML → docs/blog.html + docs/wordpress.html

make verify     # 验证 src/ 完整性

make rebuild    # clean + pack + docs

make clean      # 清理 dist/ 旧产物

重新生成新版本:修改 VERSION → 替换 src/bin/src/bin-arm64/src/compose/docker-compose 二进制 → 更新 docs/CHANGELOG.md → 执行 make rebuild

问题反馈https://feedback.itmsky.com/feedback.php?t=00739f6be273dfd73d442888e07542b3

反馈时建议附上:install.sh --help 输出、/var/log/docker-universal-installer-install.log 完整日志、cat /etc/os-release、各组件版本号、journalctl -xeu docker 输出及重现步骤。


十二、License

  • 包内 Docker / Compose 二进制:Apache 2.0(Docker, Inc.)
  • 本项目脚本与文档:MIT
上一篇 EasyShare轻量级跨平台文件分享服务系统