mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-27 00:31:12 +00:00
This was discussed and agreed in #246. It will probably break a few outstanding PRs as well as a few external links but it's for the better good long term.
133 lines
2.6 KiB
Markdown
133 lines
2.6 KiB
Markdown
|
|
class: title
|
|
|
|
# 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:
|
|
|
|
```bash
|
|
$ 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.
|
|
|
|
```bash
|
|
$ 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.
|
|
|
|
```bash
|
|
$ 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.)
|
|
|
|
```bash
|
|
$ 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.
|
|
|
|
```bash
|
|
$ docker inspect --format '{{ json .Created }}' <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.
|
|
<br/>(e.g. here it adds the surrounding double-quotes.)
|