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

Docker超入門:UbuntuとNginxでWebサーバーをビルドする②

UbuntuとNginxでWebサーバーをビルドする②

 前回「UbuntuとNginxでWebサーバーをビルドする①」では、準備として Dockerfileindex.html を作成しました。今回はいよいよイメージをビルドし、コンテナを起動してWebサーバーを動かしていきます。

Dockerイメージのビルド

作成した Dockerfile をもとにイメージをビルドするには、以下のコマンドを実行します。

PS C:\Users\joeac\Desktop\docker\Webserver1> docker build -t webserver1 .
[+] Building 19.3s (9/9) FINISHED                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                        0.2s
 => => transferring dockerfile: 407B                                        0.0s
 
(省略)

 => => naming to docker.io/library/webserver1:latest                        0.0s
 => => unpacking to docker.io/library/webserver1:latest                     0.4s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/nc4wla2x36m9alzt9eqmti2fc

 ここで -t webserver1 はイメージ名を webserver1 と指定するオプションです。最後の .カレントディレクトリにDockerfileがあることを示す記号 なので忘れないようにしましょう。

オプション説明
-t [名前]イメージに名前を付ける
.Dockerfileがあるカレントディレクトリを指定

 実行するとUbuntuのベースイメージが取得され、Nginxのインストールや index.html のコピーが順番に行われます。

イメージの確認

ビルドが完了したら、以下のコマンドでイメージを確認します。

PS C:\Users\joeac\Desktop\docker\Webserver1> docker image ls

出力例は以下のようになります。

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
webserver1   latest    c9b5950accb2   52 seconds ago   220MB

webserver1 というイメージが正しく作成されたことがわかります。

コンテナの起動

作成したイメージからコンテナを起動します。

PS C:\Users\joeac\Desktop\docker\Webserver1> docker container run --name web-nginx -it -d -p 80:80 webserver1
3c6009d246c8c092ed52868665cfc1fdbb2156751c16a2cbbf1f558884d43e7e
オプション説明
--name web-nginxコンテナに「web-nginx」という名前を付ける。
-it対話モード + ターミナル割り当て
-dデタッチモード(バックグラウンド実行)
-p 80:80ホストの80番ポートをコンテナの80番ポートに割り当て

これでコンテナが起動し、Nginxがバックグラウンドで動作します。

Webブラウザで確認

ブラウザを起動して、URLに以下を入力します。

http://localhost

 画面に「Nginx Webserver」と表示されれば成功です。index.html が正しくコピーされ、Webサーバーが稼働している証拠です。

Dockerイメージのレイヤー構造

 ここで少し補足をしておきましょう。Dockerイメージは Dockerfileの命令ごとに新しいレイヤーを積み上げる仕組み で構成されています。

今回のDockerfileには以下の命令があり、それぞれがレイヤーとして追加されています。

Dockerfile命令レイヤーの役割
FROM ubuntu:latestUbuntuのベースイメージ
RUN apt-get update && apt-get install -y -q nginxNginxのインストール
COPY index.html /var/www/htmlWebページファイルのコピー
EXPOSE 80ポートの公開設定
CMD ["nginx","-g","daemon off;"]Nginxを起動する実行コマンド

 Dockerは変更がないレイヤーをキャッシュとして再利用するため、次回以降のビルドはより高速に行えます。

まとめ

 今回は「UbuntuとNginxでWebサーバーをビルドする②」として、実際にイメージをビルドし、コンテナを起動してブラウザで動作確認しました。さらにDockerfileの命令ごとにレイヤーが構築される仕組みも解説しました。