如何通过强制忽略删除docker容器,这意味着如果没有正在运行的docker容器,它什么都不做,如果有正在运行的docker容器,那么它应该停止并删除该容器。
我正在执行以下代码来停止和移除容器。
docker rm -f CONTAINER_NAME || true
如果有一个正在运行的容器,那么一切正常,但是,如果没有容器,则抛出以下错误:
Error: No such container: CONTAINER_NAME
是否有类似 --force ignore
的内容?我需要这种行为才能将其包含在自动的Makefile中。
答案 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!
答案 3 :(得分:0)
作为替代方案,您可以使用 docker run --rm
运行容器。容器一旦停止就会自行移除。