Answers:
在发行8959之后,一个良好的开端将是:
docker ps -a -q --filter="name=<containerName>"
由于name
是指容器而不是映像名称,因此您需要使用koekiebox的答案中提到的最新的Docker 1.9过滤器祖先。
docker ps -a -q --filter ancestor=<image-name>
如下面kiril所述,删除那些容器:
stop
还返回容器。
因此链接stop
并rm
会完成这项工作:
docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
ps -a
。已删除的容器...好了,它们也被删除了,它们已经不存在了。
先前的答案对我不起作用,但确实如此:
docker stop $(docker ps -q --filter ancestor=<image-name> )
您可以通过设置容器名称来启动容器:
docker run -d --name <container-name> <image-name>
可以使用同一映像启动多个容器,因此这是启动容器的好方法。然后,您可以使用此容器名称停止,附加...容器:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
sudo docker build . -t <img-name> && sudo docker stop <container-name> || true && sudo docker run -d --rm --name <container-name> <img-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}')
按映像名称停止docker容器:
imagename='mydockerimage'
docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
通过映像名称和标签停止docker容器:
imagename='mydockerimage:latest'
docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')
如果创建了图像,则可以为其添加标签,并按标签过滤正在运行的容器
docker ps -q --filter "label=image=$image"
方法不可靠
docker ps -a -q --filter ancestor=<image-name>
docker ps -a -q --filter="name=<containerName>"
按容器名称而不是图像名称过滤
docker ps | grep <image-name> | awk '{print $1}'
有问题,因为图像名称可能会出现在其他图像的其他列中
列出所有带有信息和ID的容器
docker ps
docker stop CONTAINER ID
docker stop $(docker ps -a | grep "zalenium")
docker rm $(docker ps -a | grep "zalenium")
这应该足够了。
使用:docker容器停止$(docker容器ls -q --filter ancestor = mongo)
(base) :~ user$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d394144acf3a mongo "docker-entrypoint.s…" 15 seconds ago Up 14 seconds 0.0.0.0:27017->27017/tcp magical_nobel
(base) :~ user$ docker container stop $(docker container ls -q --filter ancestor=mongo)
d394144acf3a
(base) :~ user$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
(base) :~ user$
如果您想使用简单的AWK
方法,请按以下步骤进行:
docker rm -f $(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
$(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
-根据输入图像打印Docker容器名称
docker ps
-列出所有容器
awk '{ if($2 == "<your-image-name>") { print $NF}}'
-的第二个解析列docker ps
给出了图像名称。将其与您的图像名称进行比较,将print $NF
打印容器名称。
docker rm -f
取出容器
例如,删除ubuntu映像的所有正在运行的容器可以很简单地完成:
docker rm -f $(docker ps | awk '{ if($2 == "ubuntu:latest") { print $NF}}')
PS:请记住在AWK中包含image标签,因为它是一个比较器。