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

Singularity/Apptainer容器是否支持中间构建检查点?

Singularity/Apptainer 迭代构建的解决方案

Singularity/Apptainer 默认确实没有Docker那样自动的增量构建机制,但可以通过以下几种方式实现类似中间检查点的效果,避免每次都从头构建:

  • 使用沙箱模式迭代
    先以沙箱格式构建镜像,沙箱是一个可修改的目录结构,后续修改定义文件后可以基于沙箱更新,不用重新执行所有步骤:

    # 第一次构建沙箱
    apptainer build --sandbox my_sandbox/ my_def.def
    # 修改定义文件后,更新沙箱(只执行新增/修改的步骤)
    apptainer build --sandbox --update my_sandbox/ my_def.def
    # 最终确认后,从沙箱打包成只读的sif镜像
    apptainer build final_image.sif my_sandbox/
    
  • 拆分定义文件为基础镜像+上层镜像
    把耗时的步骤(比如安装大型依赖、编译核心软件)单独写在一个基础定义文件里,构建成基础镜像后,后续的迭代都基于这个基础镜像做增量修改:

    1. 编写base.def,包含所有耗时的基础步骤,构建出base.sif:
      apptainer build base.sif base.def
      
    2. 新的迭代定义文件dev.def开头引用基础镜像,只添加新的步骤:
      From: base.sif
      
      %post
          # 这里只写新增的命令,比如安装小工具、配置环境等
          apt-get install -y nano
          echo "export PATH=/new/path:$PATH" >> $SINGULARITY_ENVIRONMENT
      
    3. 每次修改dev.def后,构建时只会执行新增的步骤,复用基础镜像的内容:
      apptainer build dev_image.sif dev.def
      
  • 利用缓存减少重复下载
    使用--cache-dir指定缓存目录,构建时会缓存下载的基础镜像、rpm/deb包等,避免重复下载耗时的资源:

    apptainer build --cache-dir ./my_build_cache my_image.sif my_def.def
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:08:12