docker exec¶
説明¶
実行中のコンテナ内でコマンドを実行します。
使い方¶
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
補足説明¶
docker exec コマンドは実行中のコンテナ内で、新しいコマンドを実行します。
docker exec コマンドが使えるのは、コンテナのプライマリ・プロセス( PID 1 として実行するプロセス)が実行中の時のみです。また、コンテナが再起動した場合は、こちらコマンドは再度実行されません。
コマンドは、コンテナ内のデフォルトディレクトリで実行します。元になるイメージが、 Dockerfile 内の WORKDIR 命令で任意のディレクトリを指定している場合、そちらで実行します。
コマンドは実行可能な状態である必要があり、連結するコマンドや、クォートしたコマンドは動作しません。例えば、 docker exec -ti my_container "echo a && echo b" は動作しませんが、 docker exec -ti my_container sh -c "echo a && echo b" は動作します。
コマンドの使用例は、以下の 使用例のセクション をご覧ください。
オプション¶
| 名前, 省略形 | デフォルト | 説明 | 
|---|---|---|
| 
 | デタッチド・モード:バックグラウンドでコマンドを実行 | |
| 
 | コンテナをデタッチするキー手順を上書き | |
| 
 | 【API 1.25+】環境変数を指定 | |
| 
 | 【API 1.25+】環境変数のファイルを読み込む | |
| 
 | アタッチしていなくても、標準入力を開き続ける | |
| 
 | このコンテナに対して  | |
| 
 | ||
| 
 | ユーザ名または UID (format: <name|uid>[:<group|gid>]) | |
| 
 | 【API 1.35+】コンテナ内の作業ディレクトリ | 
使用例¶
実行中のコンテナに docker exec を実行¶
まず、コンテナを起動します。
$ 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 を作成します。
次に、コンテナ上で双方向の bash シェルを実行します。
$ docker exec -it ubuntu_bash bash
これにより、 ubuntu_bash コンテナ内に新しい Bash セッションを作成します。
次に、現在の bash セッションに対し、環境変数を設定します。
$ docker exec -it -e VAR=1 ubuntu_bash bash
これは、 ubuntu_bash コンテナ内で新しい Bash セッションを開始し、環境変数 $VAR を 1  にしています。この環境変数が有効なのは、現在の Bash セッションのみという点に注意してください。
デフォルトの docker exec コマンドは、コンテナが作成時に設定された作業ディレクトリ内で実行します。
$ docker exec -it ubuntu_bash pwd
/
コマンドを実行するディレクトリを指定できます。
$ docker exec -it -w /root ubuntu_bash pwd
/root
一時停止中  のコンテナで docker exec を実行を試す¶
コンテナがが一時停止中の場合、 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 CLI の基本コマンド |