[Docker] Docker でNginx を起動して Web ページを表示する

スポンサーリンク
Docker
スポンサーリンク

はじめに

前回は、仮装化技術について学び、Mac に Docker をインストールして Hello World してみました。

今回は、Docker で Nginx を起動して Web ページを表示するまでをみていきます。

スポンサーリンク

目次

現在インストールされているイメージを確認する

はじめに、現在インストールされている docker イメージを確認しておきましょう。

以下のコマンドを実行することで、Docker イメージの一覧を取得できます。

docker image ls

前回、hello-world をインストールしていますので、実行すると以下のようになりました。

イメージの一覧表示
イメージの一覧表示

起動中のコンテナとイメージを削除する

はじめに、以下のコマンドを使用して現在起動中のコンテナを確認します。

docker ps -a
起動中のコンテナを確認する
起動中のコンテナを確認する

続いて、以下のコマンドを使用して起動中の コンテナを止めます。オプションで指定する[CONTAINER ID]は先ほどのコマンド実行時に表示された一番左側の列で確認することができます。

docker rm [CONTAINER ID]

以下に、筆者が実行してみた時のスクショです。CONATINER IDを指定して削除後、もう一度一覧表示をすると削除されていることを確認できます。

コンテナの削除
コンテナの削除

コンテナを削除することができましたが、ダウンロードした「hello-world」のイメージは残っています。以下のコマンドを実行すると、インストールされているイメージを確認することができます。

docker image ls

Docker イメージを削除するには、以下のコマンドを使用します。オプションのイメージ名は、先ほどの一覧で確認することができます。

docker image rm [イメージ名]
イメージの削除
イメージの削除

Nginxとは?

Nginx(エンジンエックス)は、フリーの Web サーバーです。HTTP, HTTPS, SMTP, POP3, IMAPのリバースプロキシの機能、ロードバランサ や HTTPキャッシュ といった機能も持ち合わせています。

最近では Apache よりも使用されている感があります。

Nginx のイメージをダウンロードする

pull コマンドを使用して Nginx のイメージをダウンロードします。

以下に、コマンドの使用例を示します。

docker pull nginx

Nginx のダウンロード
Nginx のダウンロード

Nginx を起動して接続してみる

nginx のイメージをダウンロードしたので、起動して、ブラウザから接続をしてみます。

enginx の起動は以下のコマンドを使用します。

docker run --name [コンテナ名] -d -p [ホスト側のポート番号]:[コンテナ側のポート番号] [イメージ名]

–name で 任意のコンテナ名を指定します。-d はコンテナをバックグラウンドで実行します。-p はコンテナのポートに、ホストのポートからアクセスできるようにするものです。

筆者は、以下のコマンドを使用して Nginx を起動しました。

docker run --name nginx00 -d -p 8080:80 nginx:latest
Nginx の起動
Nginx の起動

ブラウザからアクセスしてみる

Nginx を起動しましたので、ブラウザに「http://localhost:8080」と入力してアクセスしてみます。

ブラウザからのアクセス
ブラウザからのアクセス

Nginxのコンテナを停止する

今度は、Nginxのコンテナを停止させてみることとします。

コンテナを停止するには次の手順で行います。

docker ps -a  # ① 停止させたいコンテナの ID (CONTAINER ID)を調べる
docker container stop [CONTAINER ID]  # ② 調べた CONTAINER ID を調べてコンテナを停止する
docker ps -a  # ③ コンテナが停止したかを確認する(表示された STATUS が exited か確認 )

以下に実際に実行した時のスクショを貼っておきます。

コンテナの停止
コンテナの停止

Docker 上の Nginx に HTML を置いて表示してみる

今度は、Docker 上の Nginx に HTMLファイルを置いて、ブラウザで表示させたいと思います。

用意するファイルは以下の hello.html です。

筆者は /users/[ユーザー]/web というディレクトリに hello.html を配置しました。

<!DOCTYPE html&gt;
<html lang="ja"&gt;
    <head&gt;
        <meta charset="utf-8"&gt;
        <title&gt;Hello</title&gt;
    </head&gt;
    <body&gt;
        <h1&gt;Hello World from Enginx!!</h1&gt;
    </body&gt;
</html&gt;

続いて、 Mac の /users/[ユーザー]/web/hello.html をコンテナ側のディレクトリにマウントして Enginx を起動します。

docker run --name hello-nginx -v /Users/hiroki/web:/usr/share/nginx/html:ro -d -p 8080:80 nginx

http://localhost:8080/hello.html にアクセスすると以下のように hello のページが表示されます。

HTMLをマウントして表示
htmlをマウントして表示

先ほどのコマンドを分解してみていきます。

「docker run –name hello-nginx」はhello-nginx という名前でコンテナを起動するという意味。

「-v」はコンテナにボリュームを割り当てるためのオプションです。「/Users/hiroki/web:/usr/share/nginx/html:ro」の「/Users/hiroki/web」がホスト側(筆者の環境では Mac)のパス、「/usr/share/nginx/html」が Dcoker の Nginx 側のパスです。よってホストの「/usr/share/nginx/html」に置かれるファイル群は、あたかも「/usr/share/nginx/html」に置かれたかのように機能します。ちなみに「ro」というのはリードオンリー(つまり)読み取り専用であることを示します。

 -dオプションでバックグラウンドで実行し、-pオプションでポート転送を設定します。ポート8080でアクセスすると、nginxのポート80にフォワードされページが表示されます。

コメント

タイトルとURLをコピーしました