离线部署docker的核心是提前准备全部安装包并按依赖顺序安装:在有网环境根据目标系统(如ubuntu 20.04/22.04)下载docker-ce、containerd.io、docker-ce-cli等deb/rpm包及强制依赖,传入内网后用apt install ./xxx.deb或yum localinstall ./xxx.rpm离线安装,再systemctl enable start docker并验证docker version和hello-world运行成功。

在离线无网的内网环境中部署 Docker,核心是“提前准备、按序安装、本地验证”。不能依赖网络下载任何组件,所有文件必须从有网环境完整导出并手动传入。关键不在于命令多复杂,而在于依赖链是否理清、路径和权限是否准确。
提前在有网机器上收齐全部安装包
根据目标系统(如 Ubuntu 20.04/22.04 或 CentOS 7/8)选择对应架构(amd64/arm64)和版本,一次性下载以下三类文件:
-
Docker 引擎主包:如
docker-ce_24.0.7_amd64.deb(Ubuntu)或docker-ce-24.0.7-1.el7.x86_64.rpm(CentOS) -
强制依赖包:
containerd.io、docker-ce-cli、libseccomp2(Ubuntu)、libsystemd、iptables等;用apt-rdepends docker-ce(Ubuntu)或repoquery --requires --resolve docker-ce(CentOS)辅助确认 -
可选但推荐的工具包:
docker-compose-plugin(替代旧版 docker-compose)、jq(后续脚本处理用)、ca-certificates(避免镜像仓库 TLS 验证失败)
导入后按依赖顺序安装
传入内网服务器后,严禁直接运行 apt install docker-ce 或 yum install docker-ce——这些会触发在线源检查。必须使用离线安装命令:
-
Ubuntu:执行
sudo apt install ./docker-ce_*.deb ./containerd.io_*.deb ./docker-ce-cli_*.deb(把所有 deb 文件列全,apt 会自动解析依赖顺序) -
CentOS/RHEL:执行
sudo yum localinstall -y containerd.io-*.rpm docker-ce-cli-*.rpm docker-ce-*.rpm(注意顺序:先 containerd.io,再 cli,最后 ce) - 安装完成后运行
sudo systemctl daemon-reload刷新 unit 文件
启动服务并验证基础能力
安装只是第一步,还需确保服务能真正运行:
- 启用并启动:
sudo systemctl enable docker && sudo systemctl start docker - 验证守护进程:
sudo systemctl is-active docker应返回active - 验证客户端连通性:
docker version必须同时显示 Client 和 Server 信息,且 Server 的KernelVersion和Os字段非空 - 跑个最小容器测试:
docker run --rm hello-world 2>/dev/null || echo "运行失败:可能缺少 /dev/pts 或 cgroup 挂载"
配套配置建议(非必需但强烈推荐)
离线环境更需稳定性和可维护性,建议同步完成以下配置:
- 创建
/etc/docker/daemon.json,设置"data-root": "/data/docker"(避开根分区空间不足风险) - 若内网有私有镜像仓库,提前写入
"insecure-registries": ["harbor.internal:80"](跳过 HTTPS 强制校验) - 将普通用户加入
docker组:sudo usermod -aG docker $USER,重登生效 - 禁用自动更新机制:在
/etc/apt/apt.conf.d/(Ubuntu)或/etc/yum.repos.d/(CentOS)中注释或删除 docker 官方源











