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

如何获取OCI镜像中的完整文件?容器无法启动无法使用docker export

获取OCI镜像完整文件结构(容器无法启动时)

当容器无法启动、无法使用docker export时,你可以通过以下几种方法获取镜像合并分层后的完整文件结构:

方法1:使用skopeo + umoci工具

这是处理OCI镜像的标准工具链,无需依赖Docker daemon的完整功能:

  • 拉取镜像到本地OCI格式存储:
    skopeo copy docker://ghcr.io/foo/ccm-foo-staging oci:local-oci-image:latest
    
  • 解压镜像到本地文件系统:
    umoci unpack --image local-oci-image:latest unpacked-rootfs
    
  • 查看完整文件结构:
    ls -R unpacked-rootfs/rootfs
    

方法2:利用Docker的create+export命令

即使容器无法启动,也可以创建容器实例后导出其文件系统:

  • 从镜像创建未启动的容器:
    docker create --name temp-container ghcr.io/foo/ccm-foo-staging
    
  • 导出容器的完整文件系统并查看:
    docker export temp-container | tar -t
    
  • 完成后清理临时容器:
    docker rm temp-container
    

方法3:手动合并分层tar包

如果没有额外工具,可以手动处理docker save的结果:

  1. 解压镜像包到本地目录:
    mkdir temp-image && docker save ghcr.io/foo/ccm-foo-staging | tar -C temp-image -x
    
  2. 通过manifest.json确认分层顺序(后面的层会覆盖前面的文件):
    cat temp-image/manifest.json | jq '.[0].Layers'
    
  3. 按顺序合并所有分层到同一目录:
    mkdir merged-rootfs
    for layer_path in $(jq -r '.[0].Layers[]' temp-image/manifest.json); do
      tar -C merged-rootfs -xf temp-image/"$layer_path"
    done
    
  4. 查看合并后的文件结构:
    ls -R merged-rootfs
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:27