diff --git a/docs/reference/commandline/exec.md b/docs/reference/commandline/exec.md
index fab91cbfc1..5449e0a852 100644
--- a/docs/reference/commandline/exec.md
+++ b/docs/reference/commandline/exec.md
@@ -35,13 +35,13 @@ The command started using `docker exec` only runs while the container's primary
process (`PID 1`) is running, and it is not restarted if the container is
restarted.
-COMMAND will run in the default directory of the container. If the
-underlying image has a custom directory specified with the WORKDIR directive
-in its Dockerfile, this will be used instead.
+COMMAND runs in the default directory of the container. If the underlying image
+has a custom directory specified with the WORKDIR directive in its Dockerfile,
+this directory is used instead.
-COMMAND should be an executable, a chained or a quoted command
-will not work. Example: `docker exec -ti my_container "echo a && echo b"` will
-not work, but `docker exec -ti my_container sh -c "echo a && echo b"` will.
+COMMAND must be an executable. A chained or a quoted command does not work.
+For example, `docker exec -it my_container sh -c "echo a && echo b"` works,
+work, but `docker exec -it my_container "echo a && echo b"` does not.
## Examples
@@ -50,70 +50,91 @@ not work, but `docker exec -ti my_container sh -c "echo a && echo b"` will.
First, start a container.
```console
-$ docker run --name ubuntu_bash --rm -i -t ubuntu bash
+$ docker run --name mycontainer -d -i -t alpine /bin/sh
```
-This will create a container named `ubuntu_bash` and start a Bash session.
+This creates and starts a container named `mycontainer` from an `alpine` image
+with an `sh` shell as its main process. The `-d` option (shorthand for `--detach`)
+sets the container to run in the background, in detached mode, with a pseudo-TTY
+attached (`-t`). The `-i` option is set to keep `STDIN` attached (`-i`), which
+prevents the `sh` process from exiting immediately.
Next, execute a command on the container.
```console
-$ docker exec -d ubuntu_bash touch /tmp/execWorks
+$ docker exec -d mycontainer touch /tmp/execWorks
```
-This will create a new file `/tmp/execWorks` inside the running container
-`ubuntu_bash`, in the background.
+This creates a new file `/tmp/execWorks` inside the running container
+`mycontainer`, in the background.
-Next, execute an interactive `bash` shell on the container.
+Next, execute an interactive `sh` shell on the container.
```console
-$ docker exec -it ubuntu_bash bash
+$ docker exec -it mycontainer sh
```
-This will create a new Bash session in the container `ubuntu_bash`.
+This starts a new shell session in the container `mycontainer`.
+
+### Set environment variables for the exec process (--env, -e)
Next, set environment variables in the current bash session.
+By default, the `docker exec` command, inherits the environment variables that
+are set at the time the container is created. Use the `--env` (or the `-e` shorthand)
+to override global environment variables, or to set additional environment variables
+for the process started by `docker exec`.
+
+The example below creates a new shell session in the container `mycontainer` with
+environment variables `$VAR_A` and `$VAR_B` set to "1" and "2" respectively.
+These environment variables are only valid for the `sh` process started by that
+`docker exec` command, and are not available to other processes running inside
+the container.
+
```console
-$ docker exec -it -e VAR_A=1 -e VAR_B=2 ubuntu_bash bash
+$ docker exec -e VAR_A=1 -e VAR_B=2 mycontainer env
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+HOSTNAME=f64a4851eb71
+VAR_A=1
+VAR_B=2
+HOME=/root
```
-This will create a new Bash session in the container `ubuntu_bash` with environment
-variables `$VAR_A` and `$VAR_B` set to "1" and "2" respectively. Note that these
-environment variables will only be valid on the current Bash session.
+### Set the working directory for the exec process (--workdir, -w)
-By default `docker exec` command runs in the same working directory set when container was created.
+By default `docker exec` command runs in the same working directory set when
+the container was created.
```console
-$ docker exec -it ubuntu_bash pwd
+$ docker exec -it mycontainer pwd
/
```
-You can select working directory for the command to execute into
+You can specify an alternative working directory for the command to execute
+using the `--workdir` option (or the `-w` shorthand):
```console
-$ docker exec -it -w /root ubuntu_bash pwd
+$ docker exec -it -w /root mycontainer pwd
/root
```
### Try to run `docker exec` on a paused container
-If the container is paused, then the `docker exec` command will fail with an error:
+If the container is paused, then the `docker exec` command fails with an error:
```console
-$ docker pause test
-
-test
+$ docker pause mycontainer
+mycontainer
$ docker ps
-CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-1ae3b36715d2 ubuntu:latest "bash" 17 seconds ago Up 16 seconds (Paused) test
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+482efdf39fac alpine "/bin/sh" 17 seconds ago Up 16 seconds (Paused) mycontainer
-$ docker exec test ls
+$ docker exec mycontainer sh
-FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec
+Error response from daemon: Container mycontainer is paused, unpause the container before exec
$ echo $?
1