Docker attach と exec


■attach と exec の違い

どちらも稼働中コンテナへ接続するコマンドである。

attach exec
コンテナ内でシェルが動作していなければ接続することができない。 稼働コンテナでPID=1のプロセスを実行するため、コンテナ内でシェルが動作している必要がない。
exitコマンドで抜けるとコンテナが停止してしまう exitコマンドで抜けるてもコンテナは停止しない

1.attach

$ docker attach <コンテナ名>

コンテナ内でプロセス一覧確認。/bin/bashプロセスはもともと動いていた1つだけ。

root@a5b4fa2dda56:# ps -ef

コンテナを終了する。

root@a5b4fa2dda56:# exit

Exited になっていることが確認できる。

$ docker ps -a

2.exec

$ docker exec -it <コンテナ名> /bin/bash

コンテナ内でプロセス一覧確認。接続する際に稼働コンテナでPID=1のプロセスを実行するため、コンテナ内でシェルが動作している必要がない。

root@a5b4fa2dda56:# ps -ef

コンテナを終了する。

root@a5b4fa2dda56:# exit

稼働していることが確認できる。

$ docker ps