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.