‘docker exec’と’docker attach’の違いは?

docker execdocker attachは、Dockerコンテナとやり取りするためのコマンドですが、それぞれ異なる目的があります。

docker execは、実行中のコンテナ内でコマンドを実行するために使用されます。docker execの構文は以下の通りです。

docker exec [オプション] コンテナ名 コマンド [引数...]

ここで、オプションは追加のオプションを指定するためのものであり、コンテナ名は実行したいコマンドを実行するコンテナの名前またはID、コマンドは実行したいコマンド、引数はコマンドに渡す追加の引数です。

たとえば、IDがabc123の実行中のコンテナでbashシェルを実行したい場合、次のコマンドを使用します。

docker exec -it abc123 bash

これにより、コンテナ内でインタラクティブなbashセッションが開始されます。

一方、docker attachは、あなたのターミナルを実行中のコンテナに接続するために使用されます。docker attachの構文は以下の通りです。

docker attach [オプション] コンテナ名

ここで、オプションは追加のオプションを指定するためのものであり、コンテナ名は接続するコンテナの名前またはIDです。

たとえば、IDがabc123の実行中のコンテナにあなたのターミナルを接続したい場合、次のコマンドを使用します。

docker attach abc123

これにより、あなたのターミナルが実行中のコンテナに接続され、コンテナで実行中のプロセスの出力が表示されます。

注意点として、docker attachは、docker execが行うようにコンテナ内で新しいシェルセッションを開始するわけではありません。docker attachを使用すると、あなたのターミナルがコンテナの標準入力、出力、エラーストリームに接続され、コンテナ内で実行中のプロセスの出力を表示できるようになります。

Docker

Posted by vastee