このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】Webサーバーをビルドする②
「Webサーバーをビルドする①」の続きです。
引き続き、Webサーバーをビルドしていきます。
Webサーバーのビルド
・「docker build -t webserver1 .
」コマンドを実行します
コマンドの最後に「.」が付いていますので注意してください。「.」は、 カレントディレクトリを表していて、このディレクトリの中にDockerfileがあります。Dockerfileを指定する必要はありません。「Webserver1」は、ビルドする イメージの名前です。
PS C:\Users\joeac\Desktop\docker\Webserver1> docker build -t webserver1 .
[+] Building 69.8s (9/9) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 409B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 4.4s
=> [auth] library/ubuntu:pull token for registry-1.docker.io 0.0s
=> [1/3] FROM docker.io/library/ubuntu:latest@sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44e 2.3s
=> => resolve docker.io/library/ubuntu:latest@sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44e 0.0s
=> => sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e 1.13kB / 1.13kB 0.0s
=> => sha256:aa772c98400ef833586d1d517d3e8de670f7e712bf581ce6053165081773259d 424B / 424B 0.0s
=> => sha256:ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459 2.30kB / 2.30kB 0.0s
=> => sha256:bccd10f490ab0f3fba61b193d1b80af91b17ca9bdca9768a16ed05ce16552fcb 29.54MB / 29.54MB 1.4s
=> => extracting sha256:bccd10f490ab0f3fba61b193d1b80af91b17ca9bdca9768a16ed05ce16552fcb 0.8s
=> [internal] load build context 0.0s
=> => transferring context: 95B 0.0s
=> [2/3] RUN apt-get update && apt-get install -y -q nginx 62.7s
=> [3/3] COPY index.html /var/www/html 0.0s
=> exporting to image 0.3s
=> => exporting layers 0.3s
=> => writing image sha256:f238687ef1c22942cbc77326ad347518f364673990c8a50f0416bb8a2c4c3339 0.0s
=> => naming to docker.io/library/webserver1 0.0s
What's Next?
View a summary of image vulnerabilities and recommendations → docker scout quickview
作成されたイメージの確認
作成されたイメージを確認します。
・「docker imagae ls」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
webserver1 latest f238687ef1c2 5 minutes ago 183MB
コンテナの起動
「web-nginx」コンテナを起動します。
・「docker container run --name web-nginx -it -d -p 80:80 webserver1
」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> docker container run --name web-nginx -it -d -p 80:80 webserver1
d637da90b7002089b2adb656869c88152f6780fd144ee6094ca5fc8881f1d618
Webブラウザで確認
・Webブラウザを起動して、URLに「localhost」と入力します。
ホームページが表示されます。
Dockerイメージのレイヤ構造
ここで、ビルドしたDockerイメージのレイヤ構造について補足説明しておきます。
定義したDockerfileの詳細な解説は以下のリンク先を参考にしてください。
5つの命令から構成される Dockerfile は 5 つのレイヤーで構成されます。Dockerfile の命令ごとにイメージが作成されて、下図のように積み上がっていきます。
まとめ
DockerfileはDockerコンテナのビルド手順を記述するファイルであり、各命令はそれぞれ新しいイメージレイヤーを作成します。Dockerは各命令を実行するたびに、前のステップで作成されたイメージに変更を加えて新しいイメージを作成します。
この仕組みにより、Dockerfile内の各命令が順番に実行され、最終的に完全な状態のコンテナイメージが構築されます。命令ごとにイメージが作成されることで、変更点が明確になり、再利用性や効率性が向上します。