【问题标题】:docker-compose down --rmi all with containers sharing imagedocker-compose down --rmi all 与容器共享镜像
【发布时间】:2018-09-07 10:40:29
【问题描述】:

我有一个 docker compose 文件,它使用与它一起存储的 Dockerfile 构建一些服务,compose 看起来像这样

version: '3.5'

services:

  my_app:
    build: ""
    image: my_image
    ....
    ...

  my_two:
    image: my_image
    ...

  my_three:
    image: my_mage
    ...

现在,当我运行 docker-compose up 时,会发生镜像构建(build: "" 找到 Dockerfile 并构建它并将其命名为“my_image”),然后其他两个(my_twomy_three)正在使用已经构建的图像。

到目前为止一切顺利。

问题是,当我运行 docker-compose down --rmi all 时,它成功删除了 my_image,但随后重试两次以再次删除图像,因为它们与其他服务相关联。

该操作完成了它需要做的事情,停止并删除所有容器并删除图像,但问题是它会显示错误消息 - 我想避免这些错误消息,因为我在它周围包装了一些软件。

如何让docker-compose只删除一次图片?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    使用 build 而不是 image 来定义所有三个服务可能更容易。

    当你运行docker-compose up时,它将首先构建第一个服务,即该位不变。不同的是,它随后构建了第二个和第三个服务 - 但它将能够重用初始构建中的缓存层,因此您实际上最终得到了一个具有三个不同标签的图像.

    然后,当您将图像取下来时,docker-compose down --rmi local 可以安全地依次删除每个“图像”:第一次它实际上只是取消标记,第二次同上,然后第三次将删除图像真的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多