使用强制忽略停止并删除Docker容器

mrfwxfqh  于 2022-11-22  发布在  Docker
关注(0)|答案(5)|浏览(141)

如何使用强制忽略删除Docker容器,这意味着如果没有正在运行的Docker容器,它应该什么都不做,如果有一个正在运行的Docker容器,其名称为,那么它应该停止并删除该容器。
我将执行以下代码来停止并删除容器。

docker rm -f CONTAINER_NAME || true

如果有正在运行的容器,则一切正常,但是,如果没有容器,则会引发以下错误:

Error: No such container: CONTAINER_NAME

是否存在类似 --force ignore 的内容?我需要此行为以便将其包含在自动化Makefile中。

kqlmhetl

kqlmhetl1#

尝试此退出代码将为1:

docker rm -f CONTAINER_NAME 2> /dev/null

退出代码为0:

docker rm -f CONTAINER_NAME 2> /dev/null || true
yr9zkbsy

yr9zkbsy2#

Makefile具有内置支持,通过在命令前添加破折号来忽略特定命令的错误。

rmDocker:
    -docker rm -f CONTAINER_NAME
    @echo "Container removed!"

您仍然会看到错误消息,但makefile将忽略该错误并继续执行。
输出量:

docker rm -f CONTAINER_NAME
Error: No such container: CONTAINER_NAME
make: [rmDocker] Error 1 (ignored)
Container removed!

参考:GNU制作手册

zvms9eto

zvms9eto3#

您可以添加OR true值,如下所示:

  • 一个容器
    停靠站rm -f容器_1|| false
  • 多个容器
    (停靠站rm -f容器_1|| false)&&(停靠站rm -f集装箱_2||正确)
hc8w905p

hc8w905p4#

我更喜欢

docker container inspect CONTAINER_NAME &>/dev/null && docker rm -f CONTAINER_NAME

基于this answer的解决方案:如果容器不存在,docker container inspect将返回代码设置为1,否则设置为0,因此docker rm也将被执行。

unftdfkk

unftdfkk5#

作为一种替代方法,您可以使用docker run --rm来运行容器。容器一旦停止就会自动删除。

相关问题