【Docker入門】「docker exec」と「docker container attach」の違い

 Docker コンテナに接続するコマンドに「docker exec」と「docker attach」があります。は、どちらも実行中の Docker コンテナに接続するためのコマンドですが、それぞれ違いについて簡単にまとめます。

docker exec

  • docker exec」は、実行中のコンテナ内で新しいコマンドを実行するために使用されます。
  • 新しいシェルを開始したり、任意のコマンドを新しいプロセスとして実行できます。この新しいプロセスはPID=1ではないため、exitコマンドを使用してもコンテナは停止しません。

docker container attach

  • docker attach」は、コンテナ内で既に起動しているプロセス(PID=1のプロセス)の標準入出力に接続します。
  • コンテナ内でシェルが動作していなければ接続できず、exitコマンドで終了するとコンテナが停止します。

まとめ

  • docker exec
     実行中のコンテナ内で新しいコマンドを実行。コンテナ内でシェルが動作している必要はなく、exitで終了してもコンテナは動作を継続します。
  • docker attach
     コンテナ内で既に起動しているプロセス(PID=1)に接続。シェルが動作していないと接続できず、exitで終了するとコンテナが停止します。

 実際の使用では、新しい作業を開始したい場合や既存のプロセスに影響を与えずに作業したい場合は「docker exec」を使用します。