Get Docker Container Names

LinuxDockerContainers

Linux Problem Overview


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?

Linux Solutions


Solution 1 - Linux

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

Solution 2 - Linux

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 - Linux

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

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

Solution 4 - Linux

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.

Solution 5 - Linux

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/

Solution 6 - Linux

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncoreyView Question on Stackoverflow
Solution 1 - LinuxcleongView Answer on Stackoverflow
Solution 2 - LinuxVonCView Answer on Stackoverflow
Solution 3 - LinuxHenrik SachseView Answer on Stackoverflow
Solution 4 - LinuxLefteris XrisView Answer on Stackoverflow
Solution 5 - LinuxMaulik ParmarView Answer on Stackoverflow
Solution 6 - LinuxkainView Answer on Stackoverflow