我有一个 docker compose 文件,它使用存储在其中的 Dockerfile 构建一些服务,组合看起来像这样
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_two
,my_three
(正在使用已经构建的映像。
目前为止,一切都好。
问题是,当我运行docker-compose down --rmi all
时,它成功地删除了my_image
,但随后重试两次以再次删除图像,因为它们与其他服务相关联。
该操作执行了它需要做的事情,停止并删除所有容器并删除图像,但问题是它显示错误消息 - 我想避免这种情况,因为我正在围绕它包装一些软件。
如何使docker-compose
仅删除一次图像?
使用build而不是image定义所有三个服务可能更容易。
当你运行docker-compose up
时,它将首先构建第一个服务,即这个位是不变的。变化是它随后构建了第二个和第三个服务 - 但它将能够重用初始构建中的缓存层,因此您实际上最终会得到一个带有三个不同标签的图像。
然后,当您来删除图像时,docker-compose down --rmi local
可以依次安全地删除每个"图像":第一次实际上只是取消标记,第二次也是如此,然后第三次将真正删除图像。