问题描述
在Ubuntu 14.04(Trusty Tahr)上,我正在寻找一种方法来停止正在运行的容器,而我仅有的信息是Docker run命令中使用的映像名称。
是否有命令查找与该映像名称匹配的所有匹配运行容器并停止它们?
最佳答案
在issue 8959之后,一个好的开始将是:
docker ps -a -q --filter="name=<containerName>"
由于name
是指容器而不是映像名称,因此您需要使用koekiebox的answer中提到的最新Docker 1.9 filter ancestor。
docker ps -a -q --filter ancestor=<image-name>
如kiril下文所述,要删除这些容器:
stop
returns the containers as well.
因此,链接stop
和rm
将完成以下工作:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
次佳答案
先前的答案对我不起作用,但确实如此:
docker stop $(docker ps -q --filter ancestor=<image-name> )
第三种答案
您可以通过设置容器名称来启动容器:
docker run -d --name <container-name> <image-name>
可以使用同一映像启动多个容器,因此这是启动容器的好方法。然后,您可以使用此container-name停止并附加…容器:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
第四种答案
此代码将停止所有带有图像centos:6的容器。我找不到更简单的解决方案。
docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
甚至更短:
docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
第五种答案
停止运行容器的两种方法:
1. $docker stop container_ID
2. $docker kill container_ID
您可以使用以下命令获取正在运行的容器:
$docker ps
以下链接以获取更多信息: