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

时间:2019-01-08 19:56:41

标签: bash shell docker unix 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  

我正在尝试基于ImageName获取容器ID。

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

3 个答案:

答案 0 :(得分:3)

可接受的答案有效,但是您可能会使用名称错误objectMapper.readValue(jsonFormattedString, TransEvent.class); 但实际上运行完全不同的图像的容器名称,因为答案仅使用// list objectMapper.readValue(jsonFormattedString, new TypeReference<List<TransEvent>>(){}); // list objectMapper.readValue(jsonFormattedString, objectMapper.getTypeFactory().constructCollectionType(List.class, TransEvent.class)); // array TransEvent[] transEvents = objectMapper.readValue(jsonFormattedString, TransEvent[].class); 查找匹配项行。

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

grep

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

答案 1 :(得分:1)

如果您想根据图像名称获取容器ID,则该方法应该起作用:

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

甚至:

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

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

答案 2 :(得分:0)

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

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

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