docker exec
読む時間の目安: 2 分
説明
実行中のコンテナー内でコマンドを実行します。
利用方法
$ docker exec [オプション] CONTAINER COMMAND [ARG...]
追加説明
docker exec
コマンドを、実行中のコンテナー内において新たなコマンドを実行します。
docker exec
を使って指示されるコマンドは、コンテナーの主要プロセス(PID 1
)が実行中である場合のみ実行されます。
そしてコンテナーが再起動された際には、再実行されません。
COMMAND はコンテナーのデフォルトディレクトリにおいて実行されます。 コンテナーの元になるイメージが、Dockerfile 内の WORKDIR ディレクティブの指定により、特定ディレクトリを指定している場合は、そのディレクトリにおいて実行されます。
COMMAND は実行可能である必要があり、連結されていたりクォートで囲まれていたりすると動作しません。
例としてdocker exec -ti my_container "echo a && echo b"
は動作しませんが、docker exec -ti my_container sh -c "echo a && echo b"
であれば動作します。
本コマンドの利用例については、以下に示す 利用例の節 を参照してください。
オプション
名前/省略形 | デフォルト | 説明 |
--detach , -d |
デタッチモード。つまりコマンドをバックグラウンドで実行します。 | |
--detach-keys |
コンテナーデタッチ時のキーシーケンスをオーバーライドします。 | |
--env , -e |
API 1.25 以上 環境変数を設定します。 |
|
--env-file |
API 1.25 以上 環境変数ファイルを読み込みます。 |
|
--interactive , -i |
アタッチされていなくても STDIN は開放し続けます。 | |
--privileged |
コマンドに拡張権限を付与します。 | |
--tty , -t |
擬似 TTY を割り当てます。 | |
--user , -u |
ユーザー名または UID。(記述書式t: <name|uid>[:<group|gid>]) | |
--workdir , -w |
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 | Docker CLI の基本コマンド |