exec

使い方: docker exec [オプション] コンテナ コマンド [引数...]

実行中のコンテナでコマンドを実行

  -d, --detach=false         デタッチド・モード: コマンドをバックグラウンドで実行
  --detach-keys              デタッチド・コンテナに特定のエスケープ・キー・シーケンスを設定
  --help=false               使い方の表示
  -i, --interactive=false    アタッチしていなくても STDIN をオープンにし続ける
  --privileged=false         コマンドに拡張 Linux ケーパビリティの追加
  -t, --tty=false            疑似ターミナル (pseudo-TTY) の割り当て
  -u, --user=                ユーザ名か UID (書式: <名前|uid>[:<グループ|gid>])

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

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

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

$ docker pause test
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 $?
1

$ 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 セッションを作成します。