Naming and inspecting containers
Naming and inspecting containers
Objectives
In this lesson, we will learn about an important Docker concept: container naming.
Naming allows us to:
-
Reference easily a container.
-
Ensure unicity of a specific container.
We will also see the inspect
command, which gives a lot of details about a container.
Naming our containers
So far, we have referenced containers with their ID.
We have copy-pasted the ID, or used a shortened prefix.
But each container can also be referenced by its name.
If a container is named thumbnail-worker
, I can do:
$ docker logs thumbnail-worker
$ docker stop thumbnail-worker
etc.
Default names
When we create a container, if we don’t give a specific name, Docker will pick one for us.
It will be the concatenation of:
-
A mood (furious, goofy, suspicious, boring…)
-
The name of a famous inventor (tesla, darwin, wozniak…)
Examples: happy_curie
, clever_hopper
, jovial_lovelace
…
Specifying a name
You can set the name of the container when you create it.
$ docker run --name ticktock jpetazzo/clock
If you specify a name that already exists, Docker will refuse to create the container.
This lets us enforce unicity of a given resource.
Renaming containers
-
You can rename containers with
docker rename
. -
This allows you to “free up” a name without destroying the associated container.
Inspecting a container
The docker inspect
command will output a very detailed JSON map.
$ docker inspect <containerID>
[{
...
(many pages of JSON here)
...
There are multiple ways to consume that information.
Parsing JSON with the Shell
-
You could grep and cut or awk the output of
docker inspect
. -
Please, don’t.
-
It’s painful.
-
If you really must parse JSON from the Shell, use JQ! (It’s great.)
$ docker inspect <containerID> | jq .
- We will see a better solution which doesn’t require extra tools.
Using --format
You can specify a format string, which will be parsed by Go’s text/template package.
$ docker inspect --format '' <containerID>
"2015-02-24T07:21:11.712240394Z"
-
The generic syntax is to wrap the expression with double curly braces.
-
The expression starts with a dot representing the JSON object.
-
Then each field or member can be accessed in dotted notation syntax.
-
The optional
json
keyword asks for valid JSON output.
(e.g. here it adds the surrounding double-quotes.)