You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何针对离线环境仅打包传输Podman容器的版本增量?

Podman 容器增量打包与传输方案

答案:完全可以实现

Podman 3.4.7 支持增量镜像打包功能,能够仅导出新旧容器镜像之间的差异层,完美解决你需要传输几KB模块却要发1.1GB完整镜像的问题。

具体操作步骤

1. 准备旧版本镜像基准

假设旧版本镜像的标签为 python_runner:old(如果之前没打标签,可以用镜像ID替代),先导出旧镜像作为基准:

podman save -o python_runner_old.tar python_runner:old

如果生产实例上已经部署过旧版本镜像,这一步可以跳过,无需重新传输旧镜像文件

2. 生成增量差异包

使用 podman save 的 --diff 参数对比新旧镜像,只导出变化的层:

podman save --diff python_runner:old -o python_runner_diff.tar python_runner:latest

这个 python_runner_diff.tar 就是仅包含新增Python模块的增量包,体积会极小。

3. 在生产实例加载增量包

将增量包传输到无网络的生产实例后,执行以下命令加载:

# 如果生产实例没有旧镜像,先加载旧镜像文件
podman load -i python_runner_old.tar
# 加载增量包
podman load -i python_runner_diff.tar

加载完成后,生产实例就会拥有更新后的 python_runner:latest 镜像。

关键注意事项

  • 必须确保生产实例上存在完整的旧版本镜像,否则增量包无法正常合并。
  • 加载增量包后,建议验证新镜像功能:
podman run --rm python_runner:latest python -c "import 你的新增模块名"
  • 可以对增量包进行gzip压缩进一步减小体积:
gzip python_runner_diff.tar

你的原始构建与打包命令

Dockerfile构建命令

echo "\
FROM jupyter/scipy-notebook
USER root
RUN apt-get update && apt-get install --no-install-recommends -y mupdf-tools python3-dev

USER user
RUN pip -V
RUN pip install fitz==0.0.1.dev2
RUN pip install PyMuPDF==1.20.2
RUN pip install seaborn
RUN pip install openpyxl==3.0.10
RUN pip install flask==2.1.3
" > sciPyDockerfile
podman build --tag python_runner -f ./sciPyDockerfile

完整镜像打包命令

sudo podman save -o python_runner.tar python_runner
gzip python_runner.tar

生成的完整镜像文件信息

1.1G Nov 28 15:27 python_runner.tar.gz

内容的提问来源于stack exchange,提问作者MikaData

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:45:29