docker-compose down --rmi全部与共享映像的容器

时间:2018-09-07 10:40:30

标签: docker docker-compose

我有一个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仅删除一次图像?

1 个答案:

答案 0 :(得分:0)

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

运行docker-compose up时,它将首先构建第一个服务,即该位未更改。所发生的变化是,它随后将构建第二个和第三个服务-但它能够重用初始构建中的缓存层,因此您实际上得到的是带有三个不同标签的一个图像

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