内网混合部署
理解内网环境部署 Docker 的痛点
掌握镜像离线导入导出的方法
了解私有镜像仓库与混合部署方案
核心讲解
企业内网、涉密环境、离线环境,不能直接访问公网镜像仓库,需要特殊的部署方案。
(1)内网部署的核心痛点
不能直接 pull 公网镜像
无法在线安装依赖
镜像分发麻烦
升级维护困难
(2)方案一:镜像导出导入(离线分发)
适合少量镜像、小规模部署。
在外网能联网的机器上拉取镜像
把镜像导出成 tar 文件
把 tar 文件拷到内网机器
导入镜像,就可以用了
优点:简单,不需要额外服务 缺点:手动麻烦,版本管理乱,不适合大量镜像
(3)方案二:私有镜像仓库(Harbor)
企业级标准方案,在内网搭建私有镜像仓库 Harbor。
外网同步镜像到 Harbor
内网所有机器都从 Harbor 拉镜像
统一管理、权限控制、版本管理 优点:规范、高效、适合大规模 缺点:需要搭建维护仓库服务
(4)方案三:内网混合部署
部分服务公网、部分内网,混合组网。
外网入口、前端放公网
数据库、核心服务放内网
通过专线 / VPN 连通
镜像通过代理或者私有仓库分发
(5)注意事项
基础镜像、依赖都要提前准备好
构建镜像也要在内网或者离线构建
注意漏洞补丁和版本更新
镜像要做安全扫描,再推到内网
操作示例
# ===== 镜像导出 =====
# 外网机器上,导出镜像为tar
docker save -o nginx.tar nginx:1.25
# 多个镜像一起导出
docker save -o images.tar nginx:1.25 mysql:8.0 redis:7
# ===== 镜像导入 =====
# 把tar拷到内网机器,导入
docker load -i nginx.tar
# 验证导入成功
docker images
# 能看到nginx:1.25
# ===== 打标签推私有仓库 =====
# 给镜像打私有仓库标签
docker tag nginx:1.25 harbor.mycompany.com/base/nginx:1.25
# 推送到私有仓库
docker push harbor.mycompany.com/base/nginx:1.25
# 内网机器从私有仓库拉
docker pull harbor.mycompany.com/base/nginx:1.25
常见误区
export 和 save 搞混:save 是导出镜像,export 是导出容器,不要搞混,镜像用 save
导入镜像标签不对:save 导出的镜像导入后标签和原来一样,不用重新打
直接把 Docker 整个拷过去:不能直接复制 Docker 目录,必须用 save/load 方式
私有仓库不用 HTTPS:默认 Docker 要求 HTTPS,HTTP 的话要配置不安全仓库
课后练习
拉取一个 alpine 镜像,导出成 tar 文件
删除本地镜像,再从 tar 导入,验证成功
简述三种内网部署方案的优缺点和适用场景
思考:企业大规模内网部署,为什么推荐 Harbor 私有仓库?

