このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker基礎】nginxコンテナを作成する

nginxコンテナを作成する

 ここでは、Dockerを使用してnginx(エンジンエックス)コンテナの作成・起動・確認・停止・削除を行います。nginxはApacheと同様にWebサーバ機能を提供するソフトウェアで、近年そのシェアを大きく伸ばしています。Apacheとは異なる特徴を持ちながらも、基本的な設定や操作方法は非常に似ているため、Apacheの経験がある方であればスムーズに理解できるでしょう。以下の手順に従って、nginxコンテナの基本操作を実践してみましょう。

nginxとは

 nginx(エンジンエックス)は、高性能で軽量なWebサーバソフトウェアとして広く利用されています。リバースプロキシやロードバランサとしての機能も充実しており、多くの大規模Webサイトで採用されています。Apacheと比較すると、リソースの消費が少なく、高速な処理が可能な点が特徴です。nginxが動作しているサーバにファイルを配置することで、インターネット上からアクセス可能なWebサイトとして公開することができます。

nginxコンテナの作成から削除までの実践

以下の手順に従って、nginxコンテナの作成から削除までを実践してみましょう。

作成するコンテナの情報

まず、作成するコンテナの詳細情報を確認しましょう。

項目
コンテナ名NginxServer
イメージ名nginx
ポートの設定8080:80

Step1:「run」コマンドを実行する

 nginxの公式イメージ(nginx)を使用して「NginxServer」という名前のコンテナを作成・起動します。ポート番号はホストの8080番をコンテナの80番にマッピングします。既にnginxイメージがローカルに存在しない場合、イメージのダウンロードが開始されますが、今回は初回ダウンロードのため時間がかかります。

コマンドの実行

PowerShellまたはターミナルに以下のコマンドを入力します。

docker run --name NginxServer -d -p 8080:80 nginx

コマンドの解説

  • docker run: 新しいコンテナを作成して起動します。
  • --name NginxServer: コンテナに「NginxServer」という名前を付けます。
  • -d: コンテナをバックグラウンド(デタッチドモード)で実行します。
  • -p 8080:80: ホストのポート8080をコンテナのポート80にマッピングします。
  • nginx: 使用するイメージ名(nginxの公式イメージ)。

実行結果

PS C:\Users\joeac> docker run --name NginxServer -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
fd674058ff8f: Already exists
566e42bcee1c: Pull complete
2b99b9c5d9e5: Pull complete
bd98674871f5: Pull complete
1e109dd2a0d7: Pull complete
da8cc133ff82: Pull complete
c44f27309ea1: Pull complete
Digest: sha256:42e917aaa1b5bb40dd0f6f7f4f857490ac7747d7ef73b391c774a41a8b994f15
Status: Downloaded newer image for nginx:latest
83066f756a9a0a8b1ad6296caeff6975c1aa18a38b12211464e1fd1ef30cf6fd 

注意点

  • Unable to find image 'nginx:latest' locally: ローカルにnginxイメージが存在しないため、Docker Hubからダウンロードが開始されます。
  • 最後の文字列(例: 83066f756a9a0a8b1ad6296caeff6975c1aa18a38b12211464e1fd1ef30cf6fd)はコンテナIDであり、環境によって異なります。

Step2:「ps」コマンドでコンテナの稼働を確認する

作成・起動した「NginxServer」コンテナが正しく稼働しているか確認します。

コマンドの実行

docker ps

実行結果

PS C:\Users\joeac> docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                  NAMES
83066f756a9a   nginx     "/docker-entrypoint.…"   20 seconds ago   Up 19 seconds   0.0.0.0:8080->80/tcp   NginxServer

確認ポイント

  • NAMES列に「NginxServer」と表示されていること。
  • STATUSが「Up」であること。
  • PORTS0.0.0.0:8080->80/tcpと表示され、ホストのポート8080がコンテナのポート80にマッピングされていること。

Step3:ブラウザでnginxにアクセスできることを確認する

ブラウザを開き、以下のURLにアクセスして、nginxの初期画面が表示されることを確認します。

http://localhost:8080/

注意点

  • プロトコルはhttpを使用します(httpsではありません)。
  • 正常に動作していれば、nginxのデフォルトページが表示されます。

図: nginxの初期画面

Step4:「stop」コマンドでコンテナを停止する

「NginxServer」コンテナの動作を停止します。

コマンドの実行

docker stop NginxServer

実行結果

PS C:\Users\joeac> docker stop NginxServer
NginxServer

解説

  • docker stopコマンドにより、指定したコンテナ名「NginxServer」のコンテナが停止されます。
  • 実行結果として、停止されたコンテナ名が表示されます。

Step5:「rm」コマンドで、コンテナを削除する

不要になった「NginxServer」コンテナを削除します。

コマンドの実行

docker rm NginxServer

実行結果

PS C:\Users\joeac> docker rm NginxServer
NginxServer

解説

  • docker rmコマンドにより、指定したコンテナ名「NginxServer」のコンテナが削除されます。
  • 実行結果として、削除されたコンテナ名が表示されます。

注意点

  • コンテナを削除する前に、必ずコンテナが停止されていることを確認してください。稼働中のコンテナは削除できません。
  • コンテナを削除すると、そのコンテナ内のデータは失われます。必要なデータがある場合は、事前にバックアップを取ってください。

Step6:「ps -a」コマンドに引数を付けて、コンテナの消去を確認する

コンテナが正しく削除されたか確認します。

コマンドの実行

docker ps -a

実行結果

PS C:\Users\joeac> docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

確認ポイント

  • 「NginxServer」が一覧に表示されていないこと。
  • 他のコンテナ(例: hello-world)が存在する場合でも、「NginxServer」が削除されていることを確認します。

まとめ

 ここでは、Dockerを使用してnginxコンテナを作成・起動し、その稼働状況を確認、停止、削除する一連の流れを実践しました。以下のポイントを押さえておきましょう。

  • nginxの特徴理解: nginxは高性能で軽量なWebサーバとして広く利用されており、Apacheとは異なる特徴を持ちながらも、基本的な操作方法は類似しています。
  • ポートマッピングの重要性: ホスト側のポート番号(今回の場合は8080)をコンテナのポート番号(80)に適切にマッピングすることで、ホストからコンテナ内のサービスにアクセス可能になります。
  • コマンドの理解: docker runコマンドにおける各オプション(--name-d-p)の役割を理解し、適切に使用することが重要です。
  • コンテナの管理: docker psdocker stopdocker rm などの基本コマンドを活用して、コンテナの稼働状況を確認し、不要なコンテナを適切に停止・削除する習慣を身につけましょう。

 初めてDockerを操作する方は、これらの手順を何度か繰り返して実践することで、コマンドラインでの操作に慣れ、Dockerの基本的な管理方法を身につけることができます。また、nginx以外のさまざまなコンテナを作成・操作することで、Dockerの幅広い活用方法を理解し、より高度なコンテナ管理技術を習得する基礎を築きましょう。

 次のコンテンツでは、さらに難易度の高いMySQLコンテナの作成と管理について学びます。引き続き、Dockerの学習を進めていきましょう。