Get Docker Container Names
Solution 1:
docker ps --format "{{.Names}}"
Solution 2:
You can combine docker ps
with docker inspect
, as I mentioned before in "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-
As commented by Chris Stryczynski, it will print names with a '/
' as a prefix.
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
From moby/moby issue 6705:
Inspect exposes the inner details of how docker is handling the container.
Names are prefixed with their parent and/
== "the docker daemon".
That is why every name will have this prefixed.
This will be more important when nesting and multihost come into play.
The/
is correct for the inspect command.
Hence the | cut -c2-
.
More recently (June 2017), there is a proposal (moby/moby issue 29997) for removing the '/
':
the leading slash is there for historical reasons (mainly because of the legacy container-linking)
So far (June 2018), no PR has been fully implemented to get rid of the leading '/
'.
Solution 3:
You could do that with this command inspired by this question:
docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)
Solution 4:
You can also do it using awk:
docker ps -a | awk '{print $NF}'
$NF
indicates the last column of the input, which in docker ps -a
command is Names.