このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】ONBUILDを使ってみる①
ここでは、ONBUILDを試していきます。
少し長くなりますので、3部に分けて解説します。
「ONBUILD」で操作していく内容の全体像は、下図となります。順に操作しながら解説していきます。
「ONBUILDを使ってみる①」では、まず、下図のオレンジの枠のところを作成していきます。
- 「base-image」を作成するための「Dockerfile.base」の作成
- 「whale-image」を作成するための「Dockerfile」の作成
- 「開発環境のページ」を構成する「Webコンテンツ」の作成
準備
不要なコンテナとイメージの一括削除
不要となったコンテナとイメージを一括削除するために「docker system prune」コマンドを実行します。
「docker system prune -a」は、全ての未使用のDockerオブジェクトを削除するためのコマンドです。
・「docker system prune -a」コマンドを実行します。
「Are you sure you want to continue? [y/N]」の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
27f3be8f93a06fecc11d45074e2ae426e3dcc0224596dd40e9153c6ad017e4e8
Deleted Images:
untagged: webserver1:latest
deleted: sha256:27fd964f8cd997c5aa3bd8d71e95055168c8f69b72f92710b6afec93f0edf32c
Deleted build cache objects:
lf0lhx165c8rafuacuoll7a99
lr48g68k66eus65qfrawtw0ae
3diux4tpi507wjvwsf8ype9v2
492eee34attjbzrptnn0gfi55
jid620sgccrj2wfnw7gxqddcn
waxz4h9x3pfx73x6ai9e3087b
Total reclaimed space: 105MB
ローカルにあるコンテナとイメージを以下のコマンドを実行して確認します。
- 「docker container ls -a」コマンド
- 「docker image ls」コマンド
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
コンテナとイメージが一括削除されていることが確認できます。
作業ディレクトリに移動
作業ディレクトリに移動します。
・「cd desktop/docker」と入力します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「Webserver2」ディレクトリを作成
ONBUILDに用いる Dockerfile.base や Dockerfile などを格納する「Webserver2」ディレクトリを作成します。
・「mkdir Webserver2」コマンドを実行します。
「Webserver2」ディレクトリが作成されます。
PS C:\Users\joeac\Desktop\docker> mkdir Webserver2
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/03/20 16:19 Webserver2
「Webserver2」ディレクトリに移動します。
・「cd Webserver2」と入力します。
PS C:\Users\joeac\Desktop\docker> cd Webserver2
PS C:\Users\joeac\Desktop\docker\Webserver2>
Dockerfile.baseの作成(base-image作成用)
「base-image」をビルドするための「Dockerfile.base」を作成します。
・「code Dockerfile.base」を実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> code Dockerfile.base
VS Codeが起動します。
・以下の内容を入力して保存します。
# Step1 : Ubuntuイメージの作成
FROM ubuntu:latest
# Step2 : nginxのインストール
RUN apt-get update && apt-get install -y -q nginx
# Step3 ... 80番ポートの公開
EXPOSE 80
# Step4 : Webコンテンツのコピー
ONBUILD ADD webcontent.tar /var/www/html
# Step5 : コマンドの実行(nginxの開始)
CMD ["nginx","-g","daemon off;"]
Dockerfileの作成(whale-image作成用)
「whale-image」をビルドするための「Dockerfile」を作成します。
・「code Dockerfile」を実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> code Dockerfile
VS Codeが起動します。
・以下の内容を入力して保存します。
# 「base-image」をベースにイメージを作成
FROM base-image
Webコンテンツの作成
Webコンテンツを作成します。
画像ファイルのダウンロード
・クジラのアイコンを下記リンクからダウンロードします。
ここでは、PNGファイルをダウンロードすることにします。
・ダウンロードしたクジラのアイコンのファイル名を「whale.png」に変更します。
・「whale.png」を「Webserver2」ディレクトリに保存します。
Topページの作成
index.html」を作成します。
・「code index.html」を実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> code index.html
VS Codeが起動します。
・以下の内容を入力して保存します。
<HTML>
<BODY>
<H1>Development environment</H1>
<BR>
<IMG src="whale.png">
</BODY>
</HTML>
「index.html」の表示
作成した「index.html」を表示して確認します。
・「index.html」をブラウザで表示します。
「index.html」をダブルクリックするなどして確認します。
上図のようにブラウザ表示されていれば、「index.html」が正しく作成されています。
ファイルの確認
「Webserver2」ディレクトリ内のファイルを確認します。
・「ls」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\Webserver2> ls
Directory: C:\Users\joeac\Desktop\docker\Webserver2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2024/03/20 17:29 71 Dockerfile
-a--- 2024/03/20 16:55 381 Dockerfile.base
-a--- 2024/03/20 17:40 95 index.html
-a--- 2024/03/20 3:05 4988 whale.png
この続きは「ONBUILDを使ってみる②」で解説していきます。