Docker exec/attachコマンド

トップ > Docker > コマンド > 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

Copyright (C) 2019 杜甫々
初版:2019年9月1日 最終更新:2019年9月1日
http://www.tohoho-web.com/docker/docker_exec.html