如何在不启动容器的情况下将 docker 镜像导出到 rootfs?

问题描述 投票:0回答:3

我想将 docker 镜像保存为 rootfs 格式(比如由

/etc /var ...
组成的目录),这就像
docker export
所做的一样。
docker save
也不能满足我的需要,因为它保存了图像的图层,而不是它们安装在一起的目录。但我不想使用
docker export
,因为它仅在使用此图像的容器运行时才有效。现在我有一个包含大约 1000 个条目的图像列表,如何在不先在每个图像上启动容器的情况下将每个图像保存到 rootfs?

docker containers docker-image rootfs
3个回答
5
投票

为了扩展@lucasvc 的回答,这里有一个简单的方法:

docker export $(docker create <image id>) --output="latest.tar"

4
投票

引用 @tgogos 评论:

遍历图像,使用

docker create ...
创建容器(创建它不会启动),然后使用
docker export ...
最后使用
docker rm ...

清理

2
投票

我刚刚开源了 undocker,它可以将 docker 镜像层转换为 rootfs tarball:

$ skopeo copy docker://docker.io/busybox:latest docker-archive:busybox.tar
$ undocker busybox.tar - | tar -tv
drwxr-xr-x 0/0               0 2021-05-17 22:07 bin/
-rwxr-xr-x 0/0         1149184 2021-05-17 22:07 bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/[[ link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/acpid link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/add-shell link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/addgroup link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/adduser link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/adjtimex link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/ar link to bin/[
hrwxr-xr-x 0/0               0 2021-05-17 22:07 bin/arch link to bin/[
...
© www.soinside.com 2019 - 2024. All rights reserved.