如何通过命令行获取基于Docker映像名称的容器ID?

bgibtngc  于 2022-12-03  发布在  Docker
关注(0)|答案(3)|浏览(234)

如果我运行sudo doccker 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

ycl3bljg

ycl3bljg1#

如果您想根据映像名称获取容器ID,则应执行以下操作:

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

或者甚至:

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

正如其他人所建议的,您也可以使用ancestor过滤器直接按图像名称进行过滤:

$ docker ps -aqf "ancestor=<image_name>"

感谢@kevin-cui和@Yu-chen。

ahy6op9u

ahy6op9u2#

可接受的答案是有效的,但您可能有一个命名错误的容器名称,它的名称中包含postgres,但实际上运行的是一个完全不同的映像,因为答案只使用grep来查找匹配行。
您可以使用Docker内置的filter标志:

docker ps --filter "ancestor=postgres" -q

-q标志表示仅返回容器ID(安静模式)。

zkure5ic

zkure5ic3#

我只需要通过映像名称获取最新运行的容器ID,包括停止的容器:

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

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

相关问题