如何将通过Docker build构建的Docker镜像转换为OCI格式及其他格式?
如何将Docker构建的镜像转换为OCI格式或其他格式?
转换为OCI格式
用Docker内置命令实现
构建时直接生成OCI镜像布局:
执行构建命令时指定输出类型为OCI,会在指定路径生成OCI格式的镜像目录:docker build . --output type=oci,dest=./my-oci-image将已有的Docker镜像转成OCI格式tar包:
先给目标镜像打标签(可选,方便识别),再用docker save指定格式导出:docker tag my-image:latest my-oci-image:latest docker save --format oci -o my-oci-image.tar my-oci-image:latest
用Buildah工具转换
Buildah是专注于OCI镜像操作的工具,转换步骤如下:
- 加载本地Docker镜像到Buildah:
buildah pull docker-daemon:my-image:latest - 导出为OCI格式tar包:
buildah push my-image:latest oci-archive:./my-oci-image.tar - 导出为OCI布局目录:
buildah push my-image:latest oci:./my-oci-image-dir
用Skopeo工具转换
Skopeo支持跨格式/仓库的镜像复制,转换命令很直接:
- 转成OCI格式tar包:
skopeo copy docker-daemon:my-image:latest oci-archive:./my-oci-image.tar - 转成OCI布局目录:
skopeo copy docker-daemon:my-image:latest oci:./my-oci-image-dir
转换为其他常见格式
- Docker原生tar包(可通过
docker load重新导入):docker save -o my-image.tar my-image:latest - 容器文件系统快照tar包(仅包含容器内文件,无镜像元数据):
docker export $(docker create my-image:latest) -o my-container-fs.tar
内容的提问来源于stack exchange,提问作者Kerem
相关产品推荐
相关产品推荐

