获取Docker容器名称

cor*_*rey 35 linux containers docker

此命令为我提供了运行容器ID的列表:

docker ps -q
Run Code Online (Sandbox Code Playgroud)

是否有命令来获取容器名称列表?

cle*_*ong 51

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


Von*_*onC 14

你可以结合docker ps使用docker inspect,正如我之前在" 如何在Docker.io中列出容器? " 中提到的那样:

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

正如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
Run Code Online (Sandbox Code Playgroud)

moby/moby问题6705:

Inspect暴露了docker如何处理容器的内部细节.
名称以其父级和/=="docker守护程序" 为前缀.
这就是为什么每个名字都有这个前缀.
当嵌套和多主机发挥作用时,这将更加重要.
/该检查命令是否正确.

因此| cut -c2-.

最近(2017年6月),有一项提案(moby/moby issue 29997)用于删除' /':

由于历史原因,主要的斜线存在(主要是因为传统的容器链接)

到目前为止(2018年6月),没有PR完全实施以摆脱领先' /'.


h3n*_*rik 8

您可以使用此问题启发此命令来执行此操作:

docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)
Run Code Online (Sandbox Code Playgroud)


Lef*_*ris 8

你也可以使用 awk:

docker ps -a | awk '{print $NF}'
Run Code Online (Sandbox Code Playgroud)

$NF表示输入的最后一列,在docker ps -a命令中是名称。


Mau*_*mar 7

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

docker ps -a --format "table {{.ID}}\t{{.Names}}"
Run Code Online (Sandbox Code Playgroud)

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