このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】Webサーバーをビルドする①
ここでは、Webサーバーをビルドしていきます。
少し長くなりますので、2部に分けで解説していきます。
準備
不要なコンテナとイメージの一括削除
不要になったコンテナとイメージを一括削除するために「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:
976733da661c0af91790a368b63ed817dedc1d7b14b965c02c4b172595b05cb4
9f1ab24c7b87e3f28b2a927fe5d33f103fdec304fa06b971b8267d3e8659a436
Deleted Images:
untagged: infralinux1/centos-smp-img:1.0
deleted: sha256:303fb5d5c2a92645a859ac2ededb0294e0b9b4c019771c99f57a200fd997726d
deleted: sha256:73637a031283b1ac22ccfd0f557f9b4d86c58ddfefe6b039f0ee3a57bbd29913
deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
untagged: centos-smp2:latest
deleted: sha256:3bbc6161db3e108416687a300c95f564a7e32c5606c7796e71d97cfa38a055d1
deleted: sha256:f06ed6a28d8f419669d9110aeae3d52e44b416a8744bf57800343c72ab5d822d
untagged: ubuntu-smp2:latest
deleted: sha256:641afb02a72bf357fd3b256fc6ac61c16b67fee5472133a3d0a26dd9979aa9f4
deleted: sha256:4e438379467b7d7e72262b8cbba26199ddf86967e5da01146168aa3c95ca7e36
untagged: infralinux1/ubuntu-smp:1.0
deleted: sha256:9a9568f10c243fe5494ae055466dfb32a286395bd65a78c14d860d6631c24af3
Deleted build cache objects:
siqmr9n7yzcf3ph58wwcd83u6
8hauzxb7rijcluym7c1w9tnoc
k5x4k8rua8mnqeqo37ecacju0
Total reclaimed space: 540.4MB
ローカルにあるコンテナとイメージを以下のコマンドを実行して確認します。
- 「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>
「Webserver1」ディレクトリを作成
Webサーバーのビルドに用いるDockerfileなどを格納する「Webserver1」ディレクトリを作成します。
・「mkdir Webserver1」コマンドを実行します。
「Webserver1」ディレクトリが作成されます。
PS C:\Users\joeac\Desktop\docker> mkdir Webserver1
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/03/18 17:04 Webserver1
「Webserver1」ディレクトリに移動します。
・「cd Webserver1」と入力します。
PS C:\Users\joeac\Desktop\docker> cd Webserver1
PS C:\Users\joeac\Desktop\docker\Webserver1>
ビルドするWebサーバーの構成
ビルドするWebサーバーの構成は下表のとおりです。
項目 | 説明 |
---|---|
イメージ名:webserver1 | Dockerfileを用いて「webserver1」イメージをビルドします。イメージ名は小文字にする必要があります。 |
OS:Ubuntu:latest | ubuntuの最新バージョンをベースイメージにします。 |
AP:nginx | WebサーバアプリケーションであるnginxをインストールしてWebページを表示できるようにします。 |
Webコンテンツ:index.html | Webコンテンツ「index.html」をUbuntu内の「/var/www/html」ディレクトリに配置します。 |
「index.html」の作成
「index.html」を作成します。
・「code index.html」を実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> code index.html
VS Codeが起動します。
・以下の内容を入力して保存します。
<HTML>
<BODY>
<H1>Nginx Webserver</H1>
</BODY>
</HTML>
「Dockerfile」の作成
「code Dockerfile」を実行します。
Dockerfileを作成します。
・「code Dockerfile」を実行します。
PS C:\Users\joeac\Desktop\docker\Webserver1> code Dockerfile
VS Codeが起動します。
・以下の内容を入力して保存します。
# Step1 : Ubuntuイメージの作成
FROM ubuntu:latest
# Step2 : Nginxのインストール
RUN apt-get update && apt-get install -y -q nginx
# Step3 : htmlファイルのコピー
COPY index.html /var/www/html
# Step4 ... 80番ポートの公開
EXPOSE 80
# Step5 : コマンドの実行(Nginxの開始)
CMD ["nginx","-g","daemon off;"]
Dockerfileの補足説明
「apt-get update && apt-get install -y -q nginx」の意味
aptを通じて、まずパッケージリストを最新の状態に更新し(apt-get update)、その後、nginxというWebサーバーソフトウェアをインストールするためのコマンドです。
「apt-get update」の意味
「apt-get update」は、UbuntuやDebianなどのLinuxディストリビューションで使用されるAPT(Advanced Package Tool)パッケージ管理システムのコマンドであり、パッケージリストを更新し、利用可能な最新のパッケージ情報を取得します。
「apt-get install -y -q nginx」の意味
このコマンドは、UbuntuやDebianなどのLinuxディストリビューションで使用されるパッケージ管理ツールであるaptを通じて、nginxというWebサーバーソフトウェアをインストールするためのコマンドです。
具体的には、「-y」オプションはインストール中に確認プロンプトをスキップし、自動的にインストールを進めることを指示し、「-q」オプションは出力を最小限に抑えて静かに実行することを示します。nginxは高性能で軽量なWebサーバーであり、このコマンドを使うことでnginxを効率的にインストールすることができます。
Dockerfileの詳細な解説
定義したDockerfileの詳細な解説は以下のリンク先を参考にしてください。
この続きは「Webサーバーをビルドする②」で解説していきます。