Bash 如何通过命令行根据docker映像名称获取容器id?

Bash 如何通过命令行根据docker映像名称获取容器id?,bash,shell,docker,unix,docker-container,Bash,Shell,Docker,Unix,Docker Container,如果我运行sudo docker ps [user@vm1 ~]$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e8ff73dec1d5 portal-mhn:latest

如果我运行
sudo docker ps

[user@vm1 ~]$ sudo docker ps 

CONTAINER ID        IMAGE                          COMMAND                  CREATED                  STATUS                  PORTS                        NAMES
e8ff73dec1d5        portal-mhn:latest         "nginx -g 'daemon of…"   43 minutes ago           Up 43 minutes  portal-mhn_portal-mhn.1.4rsfv94wy97gb333q3kfyxz32
62a7cf09d7bf        portal-admin:latest       "nginx -g 'daemon of…"   43 minutes ago           Up 43 minutes  portal-admin_portal-admin.1.s62iep4gl5g5oj2hrap14kz1t  
我正在尝试获取基于ImageName的容器ID


例如,是否可以通过命令行获取portal mhn:latest的容器id?这是
e8ff73dec1d5

如果您希望根据图像名称获取容器id,则应该可以:

$ docker ps | grep '<image_name>' | awk '{ print $1 }'

它的优点是在
image\u name
值上显示字符串,而不是查找匹配模式。感谢@kevin cui和@yu chen。

接受的答案有效,但您可能有一个名称错误的容器名称,该名称中有
postgres
,但实际上运行的是一个完全不同的图像,因为答案只使用
grep
查找匹配行

您可以使用Docker内置的
过滤器
标志:

docker ps——过滤“祖先=postgres”-q

作为替代方案。
-q
标志指示仅返回容器ID(安静模式)。

我只需按图像名称获取最新运行的容器ID,包括停止的容器:

docker ps -a | grep 'django-content-services:' -m 1 | awk '{ print $1 }'

在docker
-a
中,包含所有容器(甚至停止)。在grep中,
-m
,因此grep只匹配第一种情况。干杯

按图像名称过滤
sudo docker ps-aqf“祖先=门户mhn:latest”
谢谢。完美地工作
$ docker ps -aqf "ancestor=<image_name>"
docker ps -a | grep 'django-content-services:' -m 1 | awk '{ print $1 }'