离线内网部署docker的关键是提前准备依赖、引擎、镜像三类资源并按序导入安装配置:先在外网打包docker二进制、运行时组件及基础镜像,再通过安全通道传入内网,依次安装验证、配置systemd服务、加载镜像、设置权限与审计机制。

离线内网环境部署 Docker 的核心不是“能不能装”,而是“怎么确保每一步都可控、可验证、可复现”。关键在于把依赖、引擎、镜像三类资源全部提前准备好,再按顺序导入、安装、配置。
准备阶段:在外网机器上打包所有必需资源
这一步必须在能联网的跳板机或开发机上完成,目标是生成一份“开箱即用”的离线包。
-
Docker 引擎二进制包:直接下载官方静态版,例如:
wget https://download.docker.com/linux/static/stable/x86_64/docker-26.1.1.tgz(适配你的 CPU 架构和所需版本) -
运行时依赖组件:如
containerd.io、runc、docker-ce-cli。Ubuntu/Debian 环境用apt-get download批量抓取;CentOS/RHEL 用yum install --downloadonly或启用keepcache=1后安装再提取 RPM 包 -
常用基础镜像:用
docker pull ubuntu:22.04 nginx:alpine redis:7拉取后导出:docker save -o images.tar ubuntu:22.04 nginx:alpine redis:7 -
替代方案(推荐):用工具
docker-pull-tar直接下载镜像 tar 包,无需 Docker 环境,支持多架构,命令简洁:./DockerPull.exe search nginx && ./DockerPull.exe pull nginx:alpine
传输与安装:把包安全导入内网并落地
避免使用被禁用的协议(如 SCP),优先选择审批过的加密通道或物理介质(U盘、光盘),并校验完整性。
- 将
docker-26.1.1.tgz解压后复制二进制文件到/usr/local/bin/,运行docker --version验证 - RPM/DEB 包按依赖顺序安装:先
containerd.io,再docker-ce-cli,最后docker-ce;若用静态二进制,则跳过此步 - 创建 systemd 服务文件
/etc/systemd/system/docker.service,指定--data-root=/opt/docker和关闭 iptables 自动管理(--iptables=false) - 执行
systemctl daemon-reload && systemctl enable --now docker启动服务
镜像加载与验证:让容器真正跑起来
离线环境不靠 docker pull,全靠 docker load 导入预存镜像。
- 把
images.tar或docker-pull-tar下载的nginx-alpine.tar拷贝进内网,执行:docker load -i nginx-alpine.tar - 检查是否加载成功:
docker images应列出对应镜像;运行测试容器:docker run --rm hello-world - 如需私有仓库能力,可额外部署轻量级 registry(如
registry:2镜像也需提前导出并加载),然后配置/etc/docker/daemon.json中的insecure-registries
权限与长期维护:保障稳定与合规
内网部署不是一次性的,要兼顾安全策略和后续更新机制。
- 创建
docker用户组,把运维和开发人员加入:sudo usermod -aG docker $USER - 日志和存储路径建议独立分区(如
/opt/docker),避免系统盘爆满 - 建立内部镜像审核流程:所有镜像须经安全扫描(Trivy)、签名验证后才允许导入生产环境
- 版本升级时,重复准备→传输→验证流程,不建议在内网直接覆盖升级











