Merge pull request #3835 from dvdksn/docs/inspect-size-example

docs: docker inspect --size
This commit is contained in:
Sebastiaan van Stijn 2022-11-17 16:46:42 +01:00 committed by GitHub
commit da7bf25f52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 43 additions and 17 deletions

View File

@ -29,15 +29,15 @@ By default, `docker inspect` will render results in a JSON array.
If a format is specified, the given template will be executed for each result. If a format is specified, the given template will be executed for each result.
Go's [text/template](https://golang.org/pkg/text/template/) package Go's [text/template](https://golang.org/pkg/text/template/) package describes
describes all the details of the format. all the details of the format.
### <a name=type></a>Specify target type (--type) ### <a name=type></a>Specify target type (--type)
`--type container|image|node|network|secret|service|volume|task|plugin` `--type container|image|node|network|secret|service|volume|task|plugin`
The `docker inspect` command matches any type of object by either ID or name. The `docker inspect` command matches any type of object by either ID or name. In
In some cases multiple type of objects (for example, a container and a volume) some cases multiple type of objects (for example, a container and a volume)
exist with the same name, making the result ambiguous. exist with the same name, making the result ambiguous.
To restrict `docker inspect` to a specific type of object, use the `--type` To restrict `docker inspect` to a specific type of object, use the `--type`
@ -49,6 +49,35 @@ The following example inspects a _volume_ named "myvolume"
$ docker inspect --type=volume myvolume $ docker inspect --type=volume myvolume
``` ```
### <a name=size></a> Inspect the size of a container (-s, --size)
The `--size`, or short-form `-s`, option adds two additional fields to the
`docker inspect` output. This option only works for containers. The container
doesn't have to be running, it also works for stopped containers.
```console
$ docker inspect --size mycontainer
```
The output includes the full output of a regular `docker inspect` command, with
the following additional fields:
- `SizeRootFs`: the total size of all the files in the container, in bytes.
- `SizeRw`: the size of the files that have been created or changed in the
container, compared to it's image, in bytes.
```console
$ docker run --name database -d redis
3b2cbf074c99db4a0cad35966a9e24d7bc277f5565c17233386589029b7db273
$ docker inspect --size database -f '{{ .SizeRootFs }}'
123125760
$ docker inspect --size database -f '{{ .SizeRw }}'
8192
$ docker exec database fallocate -l 1000 /newfile
$ docker inspect --size database -f '{{ .SizeRw }}'
12288
```
## Examples ## Examples
### Get an instance's IP address ### Get an instance's IP address
@ -80,8 +109,7 @@ $ docker inspect --format='{{.Config.Image}}' $INSTANCE_ID
### List all port bindings ### List all port bindings
You can loop over arrays and maps in the results to produce simple text You can loop over arrays and maps in the results to produce simple text output:
output:
```console ```console
$ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID $ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID
@ -89,13 +117,12 @@ $ docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}}
### Find a specific port mapping ### Find a specific port mapping
The `.Field` syntax doesn't work when the field name begins with a The `.Field` syntax doesn't work when the field name begins with a number, but
number, but the template language's `index` function does. The the template language's `index` function does. The `.NetworkSettings.Ports`
`.NetworkSettings.Ports` section contains a map of the internal port section contains a map of the internal port mappings to a list of external
mappings to a list of external address/port objects. To grab just the address/port objects. To grab just the numeric public port, you use `index` to
numeric public port, you use `index` to find the specific port map, and find the specific port map, and then `index` 0 contains the first object inside
then `index` 0 contains the first object inside of that. Then we ask for of that. Then we ask for the `HostPort` field to get the public address.
the `HostPort` field to get the public address.
```console ```console
$ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID $ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}' $INSTANCE_ID
@ -103,10 +130,9 @@ $ docker inspect --format='{{(index (index .NetworkSettings.Ports "8787/tcp") 0)
### Get a subsection in JSON format ### Get a subsection in JSON format
If you request a field which is itself a structure containing other If you request a field which is itself a structure containing other fields, by
fields, by default you get a Go-style dump of the inner values. default you get a Go-style dump of the inner values. Docker adds a template
Docker adds a template function, `json`, which can be applied to get function, `json`, which can be applied to get results in JSON format.
results in JSON format.
```console ```console
$ docker inspect --format='{{json .Config}}' $INSTANCE_ID $ docker inspect --format='{{json .Config}}' $INSTANCE_ID