##■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