Dockerを使う際、コンテナの起動モードには主に「デタッチドモード」と「フォアグラウンドモード」の2種類があります。それぞれのモードは異なる場面で使い分けることが重要です。この記事では、それぞれのモードの特徴と使用方法について解説します。
デタッチドモードとは?
デタッチドモード(detached mode)とは、コンテナをバックグラウンドで実行するモードです。コンテナを起動した後、ターミナルに戻り、他のコマンドを実行することができます。デタッチドモードは、サーバーや長期間実行されるアプリケーションをコンテナ内で実行する場合に便利です。
デタッチドモードの特徴
- コンテナはバックグラウンドで実行される。
- 起動後、ターミナルをすぐに使うことができる。
- ログや標準出力はターミナルには表示されないが、
docker logs
コマンドで確認できる。
デタッチドモードの使い方
デタッチドモードでコンテナを起動するには、docker run
コマンドに-d
オプションを付けます。
docker run -d <イメージ名>
例えば、nginxサーバーをデタッチドモードで起動するには次のようにします。
docker run -d nginx
これにより、nginxコンテナがバックグラウンドで実行され、ターミナルがすぐに操作可能になります。
フォアグラウンドモードとは?
フォアグラウンドモード(foreground mode)は、コンテナをターミナル上で実行するモードです。コンテナの標準出力やエラーメッセージがリアルタイムでターミナルに表示され、コンテナの実行が終了するまでターミナルが占有されます。
フォアグラウンドモードの特徴
- コンテナの標準出力がリアルタイムでターミナルに表示される。
- コンテナの実行中はターミナルが占有され、他のコマンドを実行できない。
- コンテナの終了はターミナルの停止操作で直接行う。
フォアグラウンドモードの使い方
フォアグラウンドモードは、docker run
コマンドを-d
オプションなしで実行します。
docker run <イメージ名>
例えば、nginxをフォアグラウンドモードで実行する場合は次のようにします。
docker run nginx
これにより、nginxのログがターミナルに表示され、ターミナルがnginxの処理に占有されます。
使い分けのポイント
デタッチドモードは、長時間実行するバックグラウンドプロセスやサーバー用途に適しており、ターミナルを占有せずに他の作業を続けられます。一方、フォアグラウンドモードは、デバッグや一時的なスクリプト実行など、リアルタイムの出力が必要な場面で便利です。
それぞれのモードは、使用目的に応じて柔軟に使い分けてください。