从容器名称获取Docker容器ID


110

从容器名称获取docker容器ID的命令是什么?


4
我正在尝试,无法在线找到任何示例。感谢您的投票,我喜欢快乐的人。
Dimitri Kopriwa 2015年

您应该阅读“ 如何提问”,并提供一个最小的可复制示例docker --list或类似的样子如何?创建新容器的命令是什么?等等
fedorqui'SO stop harm'15

1
我认为我的问题很清楚,请投票,我将尽快给出答案。
Dimitri Kopriwa 2015年

1
在bash中,我没有所谓的“容器”之类的东西。也许您是说Docker容器?如果是这样,观看“ bash”标签的人们可能会感到困惑。但是,您从名称中获得了容器ID,我确定它是一个实际命令,与bash编程语言无关。
djhaskin987

Answers:


190

在Linux中:

sudo docker ps -aqf "name=containername"

或在OS X,Windows中:

docker ps -aqf "name=containername"

哪里 containername您的容器名称。

如@llia Sidorenko所述,为避免产生误报,您可以使用正则表达式锚点,如下所示:

docker ps -aqf "name=^containername$"

说明:

  • -q为了安静。仅输出ID
  • -a对所有人。即使您的容器未运行也能正常工作
  • -f用于过滤器
  • ^容器名称必须开始以该字符串
  • $容器名称必须结束这个字符串

7
给任何偶然发现此问题的人的便条:如果您将自己添加到
docker

9
请注意这个答案,如姓名=容器实际上是一个通配符,它会与名称的任何容器名称(*)(*)
伊利亚西多连科

5
@ekkis使用该--no-trunc标志。所以docker ps --no-trunc -aqf "name=containername"
code_monk '17

3
截至2019年1月7日,这对我不起作用。我正在使用docker v17.06.0。该命令docker inspect --format="{{.Id}}" imageName对我有用。
PatS

1
@code_monk,感谢您的确认。我在罗斯伯格·林哈雷斯(Rosberg Linhares)的答案中添加了一条评论,这是我从中获得灵感的地方,并建议将他的答案更改为正确的答案。
PatS

37

您可以尝试以下方法:

docker inspect --format="{{.Id}}" container_name

这种方法与操作系统无关。


5
这会返回IMAGE ID NOT CONTAINER ID
19年

2
@vijay,对我来说是容器ID:https
Rosberg Linhares

这也给了我容器的ID。完整的容器ID,而不仅仅是被截断的前12个字符。
Cowlinator '19

爱这个!谢谢。👍
GollyJer

@vijay @RosbergLinhares如果提供容器的名称(在NAMES列中提供docker ps),它将提供容器ID。如果提供了图像名称(在IMAGE列中提供docker ps),则会输出图像ID。
Wolfson

12
  1. 获取正在运行的容器的容器ID ::

    $docker ps -qf "name=IMAGE_NAME"
    
        -f: Filter output based on conditions provided
        -q: Only display numeric container IDs
    
  2. 获取所有容器的容器ID ::

    $docker ps -aqf "name=IMAGE_NAME"
    
        -a: all containers
    

2
docker ps -fq 没有工作,但是工作docker ps -qf了(标志顺序)
thom_nic 17-02-17

4

以下命令:

docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image:  {{.Image}} |  Ports: {{.Ports}}'

给出以下输出:

CONTAINER ID : d8453812a556 | Name: peer0.ORG2.ac.ae | Image:  hyperledger/fabric-peer:1.4 |  Ports: 0.0.0.0:27051->7051/tcp, 0.0.0.0:27053->7053/tcp
CONTAINER ID : d11bdaf8e7a0 | Name: peer0.ORG1.ac.ae | Image:  hyperledger/fabric-peer:1.4 |  Ports: 0.0.0.0:17051->7051/tcp, 0.0.0.0:17053->7053/tcp
CONTAINER ID : b521f48a3cf4 | Name: couchdb1 | Image:  hyperledger/fabric-couchdb:0.4.15 |  Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5985->5984/tcp
CONTAINER ID : 14436927aff7 | Name: ca.ORG1.ac.ae | Image:  hyperledger/fabric-ca:1.4 |  Ports: 0.0.0.0:7054->7054/tcp
CONTAINER ID : 9958e9f860cb | Name: couchdb | Image:  hyperledger/fabric-couchdb:0.4.15 |  Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp
CONTAINER ID : 107466b8b1cd | Name: ca.ORG2.ac.ae | Image:  hyperledger/fabric-ca:1.4 |  Ports: 0.0.0.0:7055->7054/tcp
CONTAINER ID : 882aa0101af2 | Name: orderer1.o1.ac.ae | Image:  hyperledger/fabric-orderer:1.4 |  Ports: 0.0.0.0:7050->7050/tcp`enter code here`


0

Docker映像检查ImageName \ ImageId --format = {{'。ConatinerConfig.Hostname'}}


请在回答中添加解释。仅代码(或仅在此情况下为命令)的答案对可能不理解命令或代码实际功能的新用户没有帮助。查找为什么这是不好的货运邪教编程。
Max Vollmer

0

在我的情况下,我在Ubuntu 20.04中运行Tensorflow Docker容器:在一个终端中运行您的Docker容器,我使用

docker run -it od

然后启动另一个终端并跑到下面 docker ps使用sudo:

sudo docker ps

我成功获得了容器ID:

CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
e4ca1ad20b84        od                  "/bin/bash"         18 minutes ago      
Up 18 minutes                           unruffled_stonebraker

-2

我能想到的最简单的方法是解析输出 docker ps

让我们以交互方式运行最新的ubuntu映像并连接到它

docker run -it ubuntu /bin/bash

如果您docker ps在另一个终端上运行,您会看到类似

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8fddbcbb101c        ubuntu:latest       "/bin/bash"         10 minutes ago      Up 10 minutes                           gloomy_pasteur

不幸的是,解析这种格式并不容易,因为它们使用空格来手动对齐内容

$ sudo docker ps | sed -e 's/ /@/g'
CONTAINER@ID@@@@@@@@IMAGE@@@@@@@@@@@@@@@COMMAND@@@@@@@@@@@@@CREATED@@@@@@@@@@@@@STATUS@@@@@@@@@@@@@@PORTS@@@@@@@@@@@@@@@NAMES
8fddbcbb101c@@@@@@@@ubuntu:latest@@@@@@@"/bin/bash"@@@@@@@@@13@minutes@ago@@@@@@Up@13@minutes@@@@@@@@@@@@@@@@@@@@@@@@@@@gloomy_pasteur@@@@@@

这是一个将输出转换为JSON的脚本。

https://gist.github.com/mminer/a08566f13ef687c17b39

实际上,输出比使用它更方便。每个字段为20个字符宽。 [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.