我有一个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_two
, my_three
)正在使用已建立的图像。
到目前为止很好。
问题在于,当我运行docker-compose down --rmi all
时,它成功删除了my_image
,但由于它们与其他服务相关联,因此再次尝试两次以再次删除该图像。
该操作完成了所需的操作,停止并删除了所有容器并删除了图像,但问题是它显示了错误消息-当我在周围包裹一些软件时,我想避免这种情况。
如何使docker-compose
仅删除一次图像?
答案 0 :(得分:0)
使用 build 而不是 image 来定义所有三个服务可能会更容易。
运行docker-compose up
时,它将首先构建第一个服务,即该位未更改。所发生的变化是,它随后将构建第二个和第三个服务-但它能够重用初始构建中的缓存层,因此您实际上得到的是带有三个不同标签的一个图像。
然后,当您要放下图像时,docker-compose down --rmi local
可以安全地依次删除每个“图像”:第一次实际上只是取消标记它,第二次也一样,然后第三次将其删除真实的图像。