linux 获取Docker容器名称

8zzbczxx  于 5个月前  发布在  Linux
关注(0)|答案(7)|浏览(99)

这个命令给了我一个 running container * ID * 的列表:

docker ps -q

字符串
是否有一个命令来获取容器的 * 名称 * 列表?

ctzwtxfj

ctzwtxfj1#

docker ps --format "{{.Names}}"

字符串

9lowa7mx

9lowa7mx2#

您可以将docker psdocker inspect结合使用,正如我之前在“How do you list containers in Docker.io?“中提到的:

docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)
docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc) | cut -c2-

字符串
正如Chris Stryczynski所注解的,它将打印带有“/”作为前缀的名称。

vagrant@master:~$ docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)
/k8s_kubernetes-dashboard_kubernetes-dashboard-d9d8f48bc-vz59c_kube-system_b2abc584-730a_0
/k8s_POD_kubernetes-dashboard-d9d8f48bc-vz59c_kube-system_b2abc584-_0
/k8s_metrics-server_metrics-server-6fbfb84cdd-sjrgr_kube-system_e147bf91-7218-11e8-8266_0
/k8s_POD_metrics-server-6fbfb84cdd-sjrgr_kube-system_e147bf91-7218-11e8-8266-00155d380143_0


moby/moby issue 6705
“检查”显示了 Docker 如何处理集装箱的内部详细信息。
名称的前缀是其父代和/ ==“docker守护进程”。
这就是为什么每个名字都有这个前缀。
当嵌套和多主机开始发挥作用时,这一点将更加重要。
对于inspect命令,/是正确的。
因此是| cut -c2-
最近(2017年6月),有一个删除' / '的提案(moby/moby issue 29997):
由于历史原因(主要是由于遗留的容器链接),前面的斜线会出现在那里
到目前为止(2018年6月),还没有完全实施PR来摆脱领先的“/”。

vyswwuz2

vyswwuz23#

你可以用这个受this question启发的命令来做到这一点:

docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)

字符串

mm9b1k5b

mm9b1k5b4#

你也可以使用awk:

docker ps -a | awk '{print $NF}'

字符串
$NF表示输入的最后一列,在docker ps -a命令中为Names。

ve7v8dk2

ve7v8dk25#

您可以使用以下命令来显示容器的名称

docker ps -a --format "table {{.ID}}\t{{.Names}}"

字符串
以下是有关ps命令https://docs.docker.com/engine/reference/commandline/ps/的更多信息的参考链接

ilmyapht

ilmyapht6#

我的要求是获取容器用户名登录容器(我需要使用docker exec -it --user登录容器),使用docker inspect + container idgrepusername,然后获取容器用户名登录容器。
范例:

# docker inspect 5791b95933ef |grep -i user

字符串

jk9hmnmh

jk9hmnmh7#

docker ps -a --format "{{.Names}}" --filter="id=<id>"

字符串
ID是容器ID。
示例化容器时将名称作为环境变量传递

相关问题