【问题标题】:How to export a docker image to a rootfs without starting a container?如何在不启动容器的情况下将 docker 映像导出到 rootfs?
【发布时间】:2019-05-12 09:42:41
【问题描述】:

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

【问题讨论】:

  • 只是一个想法:遍历您的图像,使用docker create ... 创建一个容器(使用create 它不会启动),然后使用docker export ...,最后使用docker rm ... 进行清理。
  • @tgogos 非常感谢。我认为docker export 不适用于停止的容器。但我试过了,发现它有效!

标签: docker containers docker-image rootfs


【解决方案1】:

引用@tgogos comment:

遍历你的图像,使用docker create ...创建一个容器(创建它不会启动),然后使用docker export ...,最后使用docker rm ...进行清理

【讨论】:

    【解决方案2】:

    要扩展@lucasvc 的答案,这里有一个单行代码:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-08-19
        • 2019-08-17
        • 2016-09-28
        • 2016-09-16
        • 1970-01-01
        • 2019-03-27
        • 2020-01-26
        • 1970-01-01
        • 2016-11-21
        相关资源
        最近更新 更多