关键在于“传得准、载得稳、启得顺”:通过docker save -o打包多镜像、SHA256校验确保完整性、脚本原子化load与启动、离线registry代理实现批量可验证部署。

镜像打包阶段就预留分发友好性
导出时优先用 docker save -o 而非重定向(>),避免因 shell 重定向截断或编码问题损坏 tar 文件:
-
docker save -o order-service-v2.3.tar order-svc:2.3 payment-svc:1.8 redis:7.2-alpine postgres:15—— 多镜像一次性打包,减少文件数量 - 文件名带版本和业务标识,如
ms-order-payment-202607.tar,便于识别与校验 - 同步生成 SHA256 校验和:
sha256sum order-service-v2.3.tar > order-service-v2.3.tar.sha256
分发介质选择与校验机制
U 盘、内网 FTP 服务器、光盘均可,但必须配套校验步骤:
- 目标机收到 tar 包后,先运行
sha256sum -c order-service-v2.3.tar.sha256验证完整性 - 若校验失败,说明传输过程出错,不执行 load,避免加载损坏镜像
- 建议将 tar 包 + .sha256 + 部署清单(JSON/YAML 列出镜像名、启动参数、端口映射)一并放入同一目录,统一解压
加载与启动需原子化、可回滚
不要手动逐条执行 docker load 和 docker run,改用轻量脚本封装:
- 写一个
deploy.sh:先docker load -i *.tar,再检查docker images | grep是否全部存在,最后调用docker-compose up -d或预置的docker run命令组 - 启动前停掉旧容器:
docker compose down或docker stop $(docker ps -q --filter "name=order-") - 加健康检查等待(如
curl -f http://localhost:8080/actuator/health),超时则自动退出并报错
多节点批量分发建议
若需向几十台离线服务器分发,推荐本地构建一套“离线分发代理”:
- 用一台带 Docker 的中转机,运行 registry:v2 镜像,挂载本地 volume 存储镜像数据
- 先
docker load镜像 tar,再docker tag并docker push localhost:5000/order-svc:2.3 - 其他目标机配置
insecure-registries后,直接docker pull localhost:5000/order-svc:2.3—— 本质是局域网内复用 registry 协议,比拷贝 tar 更易管理版本与增量更新


















