このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:nginxコンテナを例に学ぶ!デタッチモードでの起動と動作確認

nginxコンテナを例に学ぶ!デタッチモードでの起動と動作確認
Dockerを学ぶとき、よく例に使われるのが nginxコンテナ です。Webサーバーとして有名で軽量、しかもすぐに動作を確認できるので、Docker学習の題材にピッタリです。ここでは、nginxイメージを使って デタッチモード(-dオプション) の特徴を実際の流れに沿って解説していきます。

コンテナのライフサイクルをざっくり理解
コンテナの流れは大きく分けて次のように進みます。
① イメージのダウンロード(pull)
↓
② コンテナの作成
↓
③ コンテナの実行
↓
④ コンテナの停止
↓
⑤ コンテナの削除
ここでは特に ③コンテナの実行 の中で「デタッチモード」について詳しく解説します。
① nginxイメージをダウンロード
まずはnginxイメージを取得します。
docker pull nginxタグを指定しないと latest が自動的に選ばれ、最新版がダウンロードされます。
出力例
PS C:\Users\joeac> docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f1c4d397f477: Pull complete
cb497a329a81: Pull complete
d107e437f729: Pull complete
6c50e4e0c439: Pull complete
899c83fc198b: Pull complete
a785b80f5a67: Pull complete
f72106e86507: Pull complete
Digest: sha256:d5f28ef21aabddd098f3dbc21fe5b7a7d7a184720bc07da0b6c9b9820e97f25e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest| コマンド | 説明 |
|---|---|
| docker pull イメージ名[:タグ] | Docker Hubなどのレジストリからイメージを取得 |
ダウンロード後は以下で確認できます。
docker image ls出力例
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest d5f28ef21aab 5 weeks ago 279MB②③ コンテナを実行(フォアグラウンドの場合)
次のコマンドでコンテナを起動します。
docker container run --name webserver1 -p 8080:80 nginx| 部分 | 説明 |
|---|---|
| docker container run | 新しいコンテナを作成・実行 |
| --name webserver1 | コンテナに名前を付与 |
| -p 8080:80 | ホスト8080番ポートをコンテナ80番ポートにマッピング |
| nginx | 使用するイメージ |
この状態だと フォアグラウンド実行 になります。PowerShellがログを流し続け、他のコマンドが打てなくなります。
出力例
PS C:\Users\joeac> docker container run --name webserver1 -p 8080:80 nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
(省略)
2025/09/21 14:26:44 [notice] 1#1: start worker process 48-pオプションの意味
-p ホスト:コンテナ| 例 | 意味 |
|---|---|
| -p 8080:80 | ホストの8080番にアクセスすると、コンテナの80番へ転送される。 |
動作確認
これでブラウザから http://localhost:8080 を開くと Welcome to nginx! が表示されます。
下図の画面が表示されたら成功です。

PowerShellのプロンプトを確認します。
HTTPの通信状況が出力されています。
(省略)
172.17.0.1 - - [21/Sep/2025:14:31:50 +0000] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0" "-"
2025/09/21 14:31:50 [error] 30#30: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080", referrer: "http://localhost:8080/"
172.17.0.1 - - [21/Sep/2025:14:31:50 +0000] "GET /favicon.ico HTTP/1.1" 404 153 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0" "-"「Ctrl」+「c」:④コンテナの停止
「Ctrl」+「c」キーを入力するとコンテナを停止させることができます。
「Ctrl」+「c」キーを入力します。すると、コンテナが停止して、PowerShell に、以下のように出力されます。
(省略)
2025/09/21 14:32:32 [notice] 1#1: signal 17 (SIGCHLD) received from 37
2025/09/21 14:32:32 [notice] 1#1: signal 17 (SIGCHLD) received from 29
2025/09/21 14:32:32 [notice] 1#1: worker process 29 exited with code 0
2025/09/21 14:32:32 [notice] 1#1: exit・Webブラウザをリーロードします。
コンテナが停止しているため、Webserver1に接続できず、下図のように「Welcome to nginx!」と表示されなくなります。

デタッチモードとは?
フォアグラウンドだとターミナルが占有されてしまいます。そこで -dオプション をつけると、コンテナがバックグラウンドで動作します。
docker container run --name webserver2 -d -p 8080:80 nginx出力例
PS C:\Users\joeac> docker container run --name webserver2 -d -p 8080:80 nginx
50ec20183ac7472a203b76b439a92ec1d3329524ebfbb47265d756efb54db4efこのようにコンテナIDが返り、PowerShellのプロンプトがすぐに戻ってきます。これが デタッチモード です。
| オプション | 説明 |
|---|---|
| -d | デタッチモード(バックグラウンド実行) |
デタッチモードで起動しても、ブラウザからアクセスすれば同様にWebページが表示されます。
コンテナとイメージの確認
起動中や停止中のコンテナ、イメージの状態は以下で確認できます。
・コンテナ一覧(停止中含む)
docker container ls -a出力例

出力内容から、webserver1が停止しており、webserver2が起動していることが分かります。
・イメージ一覧
docker image ls出力例
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest d5f28ef21aab 5 weeks ago 279MBポイントは、複数のコンテナが1つのイメージを共有できる ことです。nginxイメージは1つですが、webserver1とwebserver2の2つのコンテナがそのイメージから作られています。
④ コンテナの停止
デタッチモードで動いているコンテナは次のコマンドで停止できます。
docker stop webserver2出力例
PS C:\Users\joeac> docker stop webserver2
webserver2 再度 docker container ls -a を実行すると、STATUSが Exited になり、停止していることが確認できます。

まとめ
- nginxイメージを
docker pullで取得 - フォアグラウンド実行ではターミナルが占有される。
-dオプションをつけるとデタッチモードでバックグラウンド実行できる。docker container ls -aで状態を確認可能docker stopでコンテナを安全に停止
nginxを例に、デタッチモードでの便利さを体感できました。実際のサービス開発や運用では、このモードで複数のコンテナを並行して動かすのが基本になります。
