Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

  -d, --detach=false         Detached mode: run command in the background
  --detach-keys              Specify the escape key sequence used to detach a container
  --help=false               Print usage
  -i, --interactive=false    Keep STDIN open even if not attached
  --privileged=false         Give extended Linux capabilities to the command
  -t, --tty=false            Allocate a pseudo-TTY
  -u, --user=                Username or UID (format: <name|uid>[:<group|gid>])

docker exec コマンドは実行中のコンテナ内で、新しいコマンドを実行します。

docker exec コマンドが使えるのは、コンテナのプラマリ・プロセス( PID 1 )が実行中の時のみです。そして、コンテナが再起動されても、こちらは再起動されません。

コンテナを一時停止すると、 docker exec コマンドは停止し、エラーになります。

$ docker pause test
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
1ae3b36715d2        ubuntu:latest       "bash"              17 seconds ago      Up 16 seconds (Paused)                       test
$ docker exec test ls
FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec
$ echo $?

$ docker run --name ubuntu_bash --rm -i -t ubuntu bash

これは ubuntu_bash という名前のコンテナを作成し、Bash セッションを開始します。

$ docker exec -d ubuntu_bash touch /tmp/execWorks

こちらは実行中の ubuntu_bash コンテナ内で、新しいファイル /tmp/execWorks をバックグラウンドで作成します。

$ docker exec -it ubuntu_bash bash

こちらは ubuntu_bash コンテナ内に新しい Bash セッションを作成します。