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

时间:2019-08-06 06:57:08

标签: bash docker

如何通过强制忽略删除docker容器,这意味着如果没有正在运行的docker容器,它什么都不做,如果有正在运行的docker容器,那么它应该停止并删除该容器。

我正在执行以下代码来停止和移除容器。

docker rm -f CONTAINER_NAME || true

如果有一个正在运行的容器,那么一切正常,但是,如果没有容器,则抛出以下错误:

Error: No such container: CONTAINER_NAME

是否有类似 --force ignore 的内容?我需要这种行为才能将其包含在自动的Makefile中。

4 个答案:

答案 0 :(得分:1)

尝试此退出代码为1:

docker rm -f CONTAINER_NAME 2> /dev/null

退出代码为0的此:

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

答案 1 :(得分:0)

您可以通过此命令获取所有活动容器和非活动容器的列表

docker container ls -a

输出应该像这样

CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                      PORTS               NAMES
cc3tyhgh3454        mariadb                  "/bin/bash"              3 months ago        Created                                         comtyr_yelf
cd20b776ubjr        solita/ubuntu-systemd   "/bin/bash -c 'exec …"   5 months ago        Exited (137) 2 months ago                       systemd
fb62434ef56w        elastic-search                  "/bin/bash"              3 months ago        Exited (130) 3 months ago                       mrydfh_tyr 

一旦可以看到您要删除的容器ID,然后按以下命令使用您要删除的ID。 注意:如果容器已经在运行,则必须先停止操作,然后再执行以下操作:

docker container rm fb62434ef56w

答案 2 :(得分:0)

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 Make Manual

答案 3 :(得分:0)

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

相关问题