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

Tif*_*oun 4 unix bash shell docker docker-container

如果我跑了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  
Run Code Online (Sandbox Code Playgroud)

我试图获取基于ImageName的容器ID。

例如 是否可以通过命令行获取Portal-mhn:latest的容器ID?这是e8ff73dec1d5

Yu *_*hen 8

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

您可以使用 Docker 的内置filter标志:

docker ps --filter "ancestor=postgres" -q
Run Code Online (Sandbox Code Playgroud)

作为备选。该-q标志指示仅返回容器 ID(安静模式)。


lee*_*ong 6

如果要基于图像名称获取容器ID,则应该可以使用:

$ docker ps | grep '<image_name>' | awk '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)

甚至:

$ docker ps | awk ' /<image_name>/ { print $1 }'
Run Code Online (Sandbox Code Playgroud)

您也可以在运行容器时为其docker run --name命名,然后按照@ kevin-cui的建议按名称进行过滤。