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

时间:2018-12-11 11:44:10

标签: docker containers docker-image rootfs

我想将docker映像保存为rootfs格式(例如由/etc /var ...组成的目录),就像docker export一样。同样,docker save也无法满足我的需求,因为它保存了除它们安装在一起的目录以外的其他图像层。但是我不想使用docker export,因为它仅在使用该映像的容器正在运行时才起作用。现在,我有一个包含约1000个条目的映像列表,如何在不首先在每个映像上启动容器的情况下将每个映像保存到rootfs?

3 个答案:

答案 0 :(得分:1)

要扩展@lucasvc的答案,请执行以下操作:

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

答案 1 :(得分:1)

我刚刚开源了 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/[
...

答案 2 :(得分:0)

引用@tgogos comment

  

反复浏览图像,使用docker create ...创建一个容器(创建时不会启动),然后使用docker export ...,最后使用docker rm ...

进行清理