diff --git a/docs/reference/builder.md b/docs/reference/builder.md index b4e3c5a3f37d..a710adff8cbe 100644 --- a/docs/reference/builder.md +++ b/docs/reference/builder.md @@ -1060,7 +1060,7 @@ If an environment variable is only needed during build, and not in the final image, consider setting a value for a single command instead: ```dockerfile -RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y ... +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y ... ``` Or using [`ARG`](#arg), which is not persisted in the final image: diff --git a/docs/reference/commandline/inspect.md b/docs/reference/commandline/inspect.md index d6174340d59d..777a6e20e554 100644 --- a/docs/reference/commandline/inspect.md +++ b/docs/reference/commandline/inspect.md @@ -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. -Go's [text/template](https://golang.org/pkg/text/template/) package -describes all the details of the format. +Go's [text/template](https://golang.org/pkg/text/template/) package describes +all the details of the format. ## Specify target type (--type) `--type container|image|node|network|secret|service|volume|task|plugin` -The `docker inspect` command matches any type of object by either ID or name. -In some cases multiple type of objects (for example, a container and a volume) +The `docker inspect` command matches any type of object by either ID or name. In +some cases multiple type of objects (for example, a container and a volume) exist with the same name, making the result ambiguous. 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 ``` +### 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 ### Get an instance's IP address @@ -80,8 +109,7 @@ $ docker inspect --format='{{.Config.Image}}' $INSTANCE_ID ### List all port bindings -You can loop over arrays and maps in the results to produce simple text -output: +You can loop over arrays and maps in the results to produce simple text output: ```console $ 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 -The `.Field` syntax doesn't work when the field name begins with a -number, but the template language's `index` function does. The -`.NetworkSettings.Ports` section contains a map of the internal port -mappings to a list of external address/port objects. To grab just the -numeric public port, you use `index` to find the specific port map, and -then `index` 0 contains the first object inside of that. Then we ask for -the `HostPort` field to get the public address. +The `.Field` syntax doesn't work when the field name begins with a number, but +the template language's `index` function does. The `.NetworkSettings.Ports` +section contains a map of the internal port mappings to a list of external +address/port objects. To grab just the numeric public port, you use `index` to +find the specific port map, and then `index` 0 contains the first object inside +of that. Then we ask for the `HostPort` field to get the public address. ```console $ 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 -If you request a field which is itself a structure containing other -fields, by default you get a Go-style dump of the inner values. -Docker adds a template function, `json`, which can be applied to get -results in JSON format. +If you request a field which is itself a structure containing other fields, by +default you get a Go-style dump of the inner values. Docker adds a template +function, `json`, which can be applied to get results in JSON format. ```console $ docker inspect --format='{{json .Config}}' $INSTANCE_ID diff --git a/docs/reference/commandline/logs.md b/docs/reference/commandline/logs.md index 57b2f42c1aab..72ae61476929 100644 --- a/docs/reference/commandline/logs.md +++ b/docs/reference/commandline/logs.md @@ -25,11 +25,6 @@ Options: The `docker logs` command batch-retrieves logs present at the time of execution. -> **Note** -> -> This command is only functional for containers that are started with the -> `json-file` or `journald` logging driver. - For more information about selecting and configuring logging drivers, refer to [Configure logging drivers](https://docs.docker.com/config/containers/logging/configure/). diff --git a/docs/reference/commandline/version.md b/docs/reference/commandline/version.md index 0ca8e19e7e22..e1c1ad06c836 100644 --- a/docs/reference/commandline/version.md +++ b/docs/reference/commandline/version.md @@ -19,30 +19,84 @@ Options: ## Description -By default, this will render all version information in an easy to read -layout. If a format is specified, the given template will be executed instead. +The version command prints the current version number for all independently +versioned Docker components. Use the [`--format`](#format) option to customize +the output. -Go's [text/template](https://golang.org/pkg/text/template/) package -describes all the details of the format. - -## Examples +The version command (`docker version`) outputs the version numbers of Docker +components, while the `--version` flag (`docker --version`) outputs the version +number of the Docker CLI you are using. ### Default output +The default output renders all version information divided into two sections; +the "Client" section contains information about the Docker CLI and client +components, and the "Server" section contains information about the Docker +Engine and components used by the Engine, such as the "Containerd" and "Runc" +OCI Runtimes. + +The information shown may differ depending on how you installed Docker and +what components are in use. The following example shows the output on a macOS +machine running Docker Desktop: + ```console $ docker version Client: - Version: 19.03.8 - API version: 1.40 - Go version: go1.12.17 - Git commit: afacb8b - Built: Wed Mar 11 01:21:11 2020 + Version: 20.10.16 + API version: 1.41 + Go version: go1.17.10 + Git commit: aa7e414 + Built: Thu May 12 09:17:28 2022 OS/Arch: darwin/amd64 Context: default - Experimental: true -Server: +Server: Docker Desktop 4.8.2 (77141) + Engine: + Version: 20.10.16 + API version: 1.41 (minimum version 1.12) + Go version: go1.17.10 + Git commit: f756502 + Built: Thu May 12 09:15:33 2022 + OS/Arch: linux/amd64 + Experimental: false + containerd: + Version: 1.6.4 + GitCommit: 212e8b6fa2f44b9c21b2798135fc6fb7c53efc16 + runc: + Version: 1.1.1 + GitCommit: v1.1.1-0-g52de29d + docker-init: + Version: 0.19.0 + GitCommit: de40ad0 +``` + +### Client and server versions + +Docker uses a client/server architecture, which allows you to use the Docker CLI +on your local machine to control a Docker Engine running on a remote machine, +which can be (for example) a machine running in the Cloud or inside a Virtual Machine. + +The following example switches the Docker CLI to use a [context](context.md) +named "remote-test-server", which runs an older version of the Docker Engine +on a Linux server: + +```console +$ docker context use remote-test-server +remote-test-server + +$ docker version + +Client: + Version: 20.10.16 + API version: 1.40 (downgraded from 1.41) + Go version: go1.17.10 + Git commit: aa7e414 + Built: Thu May 12 09:17:28 2022 + OS/Arch: darwin/amd64 + Context: remote-test-server + +Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) @@ -50,7 +104,6 @@ Server: Git commit: afacb8b Built: Wed Mar 11 01:29:16 2020 OS/Arch: linux/amd64 - Experimental: true containerd: Version: v1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 @@ -62,12 +115,21 @@ Server: GitCommit: fec3683 ``` +## Examples + +### Format the output (--format) + +The formatting option (`--format`) pretty-prints the output using a Go template, +which allows you to customize the output format, or to obtain specific information +from the output. Refer to the [format command and log output](https://docs.docker.com/config/formatting/) +page for details of the format. + ### Get the server version ```console $ docker version --format '{{.Server.Version}}' -19.03.8 +20.10.16 ``` ### Dump raw JSON data diff --git a/docs/reference/run.md b/docs/reference/run.md index 0ea20a3d6528..9644ac0258a9 100644 --- a/docs/reference/run.md +++ b/docs/reference/run.md @@ -687,7 +687,7 @@ the container exits**, you can add the `--rm` flag: | `--security-opt="label=level:LEVEL"` | Set the label level for the container | | `--security-opt="label=disable"` | Turn off label confinement for the container | | `--security-opt="apparmor=PROFILE"` | Set the apparmor profile to be applied to the container | -| `--security-opt="no-new-privileges:true"` | Disable container processes from gaining new privileges | +| `--security-opt="no-new-privileges=true"` | Disable container processes from gaining new privileges | | `--security-opt="seccomp=unconfined"` | Turn off seccomp confinement for the container | | `--security-opt="seccomp=profile.json"` | White-listed syscalls seccomp Json file to be used as a seccomp filter |