我一直在尝试使用docker process命令获取docker实例的容器ID,但是当我尝试使用 name 过滤器时,它可以精细我
sudo -S docker ps -q --filter="name=romantic_rosalind"
结果容器ID:
3c7e865f1dfb
但是,当我使用图片进行过滤时,我会获取所有实例容器ID:
sudo -S docker ps -q --filter="image=docker-mariadb:1.0.1"
结果容器ID:
5570dc09b581
3c7e865f1dfb
但我希望只获得mariadb的容器ID。
如何使用过滤器作为图像获取泊坞窗进程的容器ID?
答案 0 :(得分:71)
使用"祖先"而不是"图像"这很棒。例如:
sudo -S docker ps -q --filter ancestor=docker-mariadb:1.0.1
Docker团队可能已在最新版本中添加了它: http://docs.docker.com/engine/reference/commandline/ps/
答案 1 :(得分:31)
您可以使用awk
和grep
来过滤指定的容器ID。
例如:
docker ps | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'
这将打印容器的ID。
答案 2 :(得分:2)
使用命令docker container ls
列出容器(替代docker ps
)解决方案将是:
docker container ls | grep "docker-mariadb:1.0.1" | awk '{ print $1 }'
您也可以使用*
符号(如果需要),如下所示:
docker container ls | grep "docker-mariadb:*" | awk '{ print $1 }'
请参阅https://docs.docker.com/engine/reference/commandline/container_ls/
答案 3 :(得分:0)
docker ps -a | awk '{ print $1,$2 }' | grep imagename | awk '{print $1 }'
这很完美。如果需要,可以单独添加一个特定stsatus运行图像的过滤器,如下所示
docker ps -a --filter=running | awk '{ print $1,$2 }' | grep rulsoftreg:5000/mypayroll/cisprocessing-printdocsnotifyconsumer:latest | awk '{print $1 }'
可以在这里探索各种其他过滤器选项
https://docs.docker.com/v1.11/engine/reference/commandline/ps/
答案 4 :(得分:0)
命令示例>>> docker容器ls -af'name = mysql'--format'{{.ID}}'