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