我想将docker映像保存为rootfs格式(例如由/etc /var ...
组成的目录),就像docker export
一样。同样,docker save
也无法满足我的需求,因为它保存了除它们安装在一起的目录以外的其他图像层。但是我不想使用docker export
,因为它仅在使用该映像的容器正在运行时才起作用。现在,我有一个包含约1000个条目的映像列表,如何在不首先在每个映像上启动容器的情况下将每个映像保存到rootfs?
答案 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)
反复浏览图像,使用
进行清理docker create ...
创建一个容器(创建时不会启动),然后使用docker export ...
,最后使用docker rm ...