【问题标题】:How to obtain container id base on docker image name via command line ?如何通过命令行根据 docker 镜像名称获取容器 id?
【发布时间】:2019-06-03 13:30:24
【问题描述】:

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

【问题讨论】:

标签: bash shell docker unix docker-container


【解决方案1】:

如果您想根据图像名称获取容器 ID,这应该可以:

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

甚至:

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

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

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

这具有在image_name 值上作为字符串而不是寻找匹配模式的优点。感谢@kevin-cui 和@yu-chen。

【讨论】:

  • 谢谢。完美工作
【解决方案2】:

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

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

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

作为替代。 -q 标志表示只返回容器 ID(安静模式)。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-20
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多