このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:UbuntuとNginxでWebサーバーをビルドする②

UbuntuとNginxでWebサーバーをビルドする②
前回「UbuntuとNginxでWebサーバーをビルドする①」では、準備として Dockerfile と index.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 220MBwebserver1 というイメージが正しく作成されたことがわかります。
コンテナの起動
作成したイメージからコンテナを起動します。
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:latest | Ubuntuのベースイメージ |
| RUN apt-get update && apt-get install -y -q nginx | Nginxのインストール |
| COPY index.html /var/www/html | Webページファイルのコピー |
| EXPOSE 80 | ポートの公開設定 |
| CMD ["nginx","-g","daemon off;"] | Nginxを起動する実行コマンド |
Dockerは変更がないレイヤーをキャッシュとして再利用するため、次回以降のビルドはより高速に行えます。
まとめ
今回は「UbuntuとNginxでWebサーバーをビルドする②」として、実際にイメージをビルドし、コンテナを起動してブラウザで動作確認しました。さらにDockerfileの命令ごとにレイヤーが構築される仕組みも解説しました。
