Docker exec/attachコマンド

目次

docker exec

docker exec はコンテナ内で新たなプロセスを実行します。

Shell
# docker run -d -it --name cont1 centos:7
# docker exec cont1 /bin/ls -l

/bin/bash などの対話コマンドを実行する際は -it オプションをつけます。

Shell
# docker exec -it cont1 /bin/bash
[root@3fb3d4ba646d /]# コンテナ内の /bin/bash のプロンプトとなる
[root@3fb3d4ba646d /]# ls -l
[root@3fb3d4ba646d /]# exit
#

-w (--workdir) オプションは、プロセスのワークディレクトリを指定します。

Shell
# docker exec -it -w /tmp cont1 /bin/bash

docker attach

docker attach は、コンテナプロセス(PID=1のプロセス)に、標準入出力をアタッチします。

Shell
# docker run -d -it --name cont1 centos:7
# docker attach cont1
[root@3fb3d4ba646d /]# コンテナの PID=1 のプロセスにアタッチする

アタッチしたプロセスからデタッチするには、デタッチキー (通常は Ctrl-P Ctrl-Q) を押します。

Shell
[root@3fb3d4ba646d /]# Ctrl-P Ctrl-Q
#

アタッチした状態で Ctrl-D を押したり exit を実行すると、コンテナプロセス自体が終了し、コンテナが停止状態になります。

Shell
[root@3fb3d4ba646d /]# exit
# docker ps -a
CONTAINER ID   IMAGE      COMMAND      CREATED         STATUS                     PORTS   NAMES
3fb3d4ba646d   centos:7   "/bin/bash"  18 minutes ago  Exited (137) 5 seconds ago         cont1