docker save 仅导出已有镜像的全部层为 tar 文件,无法直接打补丁;补丁必须通过构建新镜像(如 Dockerfile 或 commit)固化,再用 docker save 导出,生成的 tar 包含基础层与新增补丁层,可 docker load 恢复使用。
docker save 本身不能直接“打补丁”或合并镜像层,它只是把已有镜像(包括其全部层)导出为 tar 文件。所谓“基础镜像 + 补丁包”,实际是指:先基于基础镜像构建一个新镜像(比如应用了安全更新、配置变更或软件升级),再用 docker save 导出这个新镜像——它天然包含所有依赖层,视觉上就是“基础镜像叠加上补丁内容”。
补丁不是单独文件,必须通过构建操作固化到镜像中。常见方式有:
只有生成了新的镜像(例如命名为 my-ubuntu-patched:22.04),后续 save 才有意义。
运行以下命令即可打包该镜像及其所有层(含基础镜像层和新增层):
docker save my-ubuntu-patched:22.04 -o patched-image.tar生成的 patched-image.tar 是标准 OCI 兼容归档,可用 docker load 恢复,也可解压查看 layers/ 目录验证是否包含多层。
不需要解压整个 tar,可快速检查结构:
注意:Docker 自动复用未变动的基础层,所以导出包里不会重复存储相同内容,体积更小。
在目标机器上执行:
docker load -i patched-image.tar加载后会自动恢复镜像名和 tag,之后就能像普通镜像一样 run、push 或 inspect。若需重命名,可在 load 后用 docker tag。