64

This command gives me a list of running container IDs:

docker ps -q

Is there a command to get the list of names of the containers?

Jakuje
  • 22,547
  • 12
  • 59
  • 68
corey
  • 641
  • 1
  • 5
  • 3

6 Answers6

97
docker ps --format "{{.Names}}"
Sunil Garg
  • 12,670
  • 19
  • 110
  • 153
cleong
  • 6,807
  • 3
  • 29
  • 40
16

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 '/'.

VonC
  • 1,129,465
  • 480
  • 4,036
  • 4,755
11

You could do that with this command inspired by this question:

docker inspect --format='{{.Name}}' $(sudo docker ps -aq --no-trunc)
Community
  • 1
  • 1
Henrik Sachse
  • 46,640
  • 7
  • 44
  • 57
9

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.

Lefteris Xris
  • 610
  • 1
  • 11
  • 19
  • This, however, also outputs the column header - which is not desired – Javier Arias Mar 19 '19 at 13:15
  • as @ascendants suggested, to exclude column headers use: `docker ps -a | awk '{ if( FNR>1 ) { print $NF }'` FNR *indicates to skip the first entry (the column header)* – Lefteris Xris May 06 '20 at 09:46
8

You can use following command to display names of container

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

Here is reference link for more information about ps command https://docs.docker.com/engine/reference/commandline/ps/

Maulik Parmar
  • 777
  • 9
  • 14
2

My requirement is get the container user name to login into the container (I need use docker exec -it --user to login container). Use docker inspect + container id and grep user or name then you can get the Container User Name and login into the container.

Example:

    # docker inspect 5791b95933ef |grep -i user
J. Scott Elblein
  • 3,541
  • 11
  • 52
  • 82
kain
  • 166
  • 1
  • 4