当前位置: 首页 > 面试题库 >

停止并删除docker容器(如果正在运行)

须景辉
2023-03-14
问题内容

我希望实用地停止并删除docker容器(如果正在运行)。这是用于构建脚本的。

请看下面的例子。我将如何停止和删除docker容器“ rabbitmq”,如bash脚本中的NAMES列所示。

docker ps

CONTAINER ID        IMAGE             COMMAND                  CREATED             STATUS              PORTS                   NAMES
9909a5e2856f        rabbitmq-image   "/docker-entrypoint.s"   11 minutes ago      Up 11 minutes       0.0.0.0:5672->5672/tcp, rabbitmq
8990dd1fe503        redis-image      "/entrypoint.sh redis"   6 weeks ago         Up 4 days           0.0.0.0:32770->6379/tcp redis
etc

以下命令将删除容器并执行即时通讯

docker stop rabbitmq && docker rm -f rabbitmq

但是它把它组合成一个我想知道的脚本吗?我认为它看起来像这样。

#!/bin/bash

if [ /*docker ps check some value */ ]; then
   docker stop rabbitmq && docker rm -f rabbitmq
fi

问题答案:

您可能已经注意到,如果容器不存在或未运行docker stop,则docker rm退出并显示状态代码以指示失败。这导致您的构建失败。

如果您可以处理构建日志中的错误消息,则可以执行以下小技巧来防止shell命令失败:

docker stop rabbitmq || true && docker rm rabbitmq || true

如果docker命令之一失败,true则会被调用,该命令始终以指示成功的状态代码退出。



 类似资料:
  • 我在官方docker网站上遵循了“开始”教程,一切都很顺利,直到我尝试删除容器。每次当我运行时 或 具有该 ID 的初始容器将停止或删除,但新容器出现并运行。我试图使用以下命令更新容器: 然而,这没有帮助。 这里是'docker info'命令结果: 和“docker inspect[container_id]”

  • 问题内容: 是否有可以将and 命令组合在一起的命令?每次我要删除正在运行的容器时,都需要顺序执行2条命令,我想知道是否有组合的命令可以简化此过程。 问题答案: 您可以使用 : 即使容器仍在运行,它也会删除该容器。 https://docs.docker.com/engine/reference/commandline/rm/ 您也可以使用选项运行容器,停止后它将自动删除。 https://doc

  • 我记得用过 几个月前没有问题地链接命令,但现在这不起作用了,我得到了以下输出: 什么改变了?如何在一行中删除所有Docker运行容器?如果有用的话,我正在Windows ;10上使用Docker for Windows(本机与Hyper-V一起使用,而不是与VirtualBox一起使用),我使用的命令在以前的Windows 8 Docker工具箱安装中运行良好。

  • 用Docker容器创建一个干净的石板的最佳方法是什么?很多时候,我觉得从头开始比较容易,但是我有一堆容器,我不确定它们的状态是什么,那么当我运行时,它就不让我运行了,因为docker容器可能还在使用中。

  • 问题内容: 我有一个Jenkinsfile或Jenkins管道,该管道创建一个新图像并从该图像中启动一个容器。第一次运作良好。但是在随后的运行中,我希望停止并删除先前的容器。我的Jenkinsfile如下: “ docker stop container”阶段失败。那是因为我不知道获取容器并停止它的正确API。谢谢。 问题答案: 就像在此Jenkinsfile中一样,您可以改用命令。 这样,您可以

  • 简而言之:我想删除docker映像,但是如果我这样做,它会告诉我不能删除它,因为该映像正在被运行的容器使用。但是据我所知,根本没有容器在运行。 详细信息:我调用查看调用图像。通过这种方式,我确定了要删除的图像ID,并调用,其中{ID}是应该删除的字符串(它适用于其他图像,因此到目前为止我非常有信心)。我得到的答复是: 来自守护程序的错误响应:冲突:无法删除{ID}(无法强制)-运行容器08815c