从容器名称获取docker容器ID的命令是什么?
答案 0 :(得分:122)
在Linux中:
sudo docker ps -aqf "name=containername"
或在OS X中:
docker ps -aqf "name=containername"
其中containername
是您的容器名称
说明:
-q
安静。仅输出ID -a
为所有人。即使你的容器没有运行也能正常工作-f
代表filter。答案 1 :(得分:25)
你可以试试这个:
docker inspect --format="{{.Id}}" container_name
这种方法与操作系统无关。
答案 2 :(得分:8)
获取正在运行容器的容器ID ::
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
获取所有容器的容器ID ::
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
答案 3 :(得分:2)
如果要基于Container名称获取完整的ContainerId,请使用以下命令
docker ps --no-trunc -aqf name=containername
答案 4 :(得分:0)
Docker映像检查ImageName \ ImageId --format = {{'。ConatinerConfig.Hostname'}}
答案 5 :(得分:0)
以下命令:
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`
答案 6 :(得分:0)
在我的情况下,我在Ubuntu 20.04中运行Tensorflow Docker容器:在一个终端中运行您的Docker容器,我用
运行它docker run -it od
然后启动另一个终端,并使用sudo在docker ps
下运行:
sudo docker ps
我成功获得了容器ID:
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
答案 7 :(得分:0)
我尝试了sudo docker container stats
,它将给出容器ID以及内存使用情况和名称等详细信息。如果您想停止查看该进程,请执行Ctrl+C
。我希望您觉得它有用。
答案 8 :(得分:0)
我还需要脚本需要附加到容器的容器名称或 ID。 进行了一些调整,但这对我来说非常有效......
export svr=$(docker ps --format "table {{.ID}}"| sed 's/CONTAINER ID//g' | sed '/^[[:space:]]*$/d')
docker exec -it $svr bash
需要使用 sed 命令来消除 CONTAINER ID 也被打印出来的事实......但我只需要将实际 ID 存储在 var 中。
答案 9 :(得分:0)
感谢 https://stackoverflow.com/a/65513726/889126 的回答,它让我有了制作完整 bash 脚本的想法
export api_image_id=$(docker inspect --format="{{.Id}}" <image-name> | sed '/^[[:space:]]*$/d')
sudo docker exec -i -t ${api_image_id} /bin/bash
我需要一个特定的容器并编写一个脚本来快速从中提取一些信息。
希望这会对其他人有所帮助。
答案 10 :(得分:0)
您可以使用以下命令打印容器 ID:
docker container ls | grep 'container-name' | awk '{print $1}'
作为加分点,如果您想使用容器名称登录容器:
docker exec -it $(docker container ls | grep 'container-name' | awk '{print $1}') /bin/bash
答案 11 :(得分:-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]]