へっぽこITエンジニア@名古屋のブログ

Follow me on GitHub

Docker、k8sまとめ[第3回] Dockerfileの利用

第2回はDocker Desktopで実行しましたが、
今回はDockerfileを紹介しようと思います。

目次

Dockerfileとは

前回、Docker Hubからnginxを落としてきてそのまま利用しましたが、
実際は、公開されているものをそのまま動かすというより、
そこに何らかの変更を加えて、イメージを作りコンテナとして動かします。

Dockerfileを書いてみよう

まず、ファイル名ですがDockerfileにします。
こうしていおくとdockerコマンドでデフォルトで読み込んでくれます。
これ以外の名前だと-f ファイル名のオプションが必要です。

では、前回使ったnginx403.htmlを足したイメージを作ってみましょう。

まず、403.htmlを作ります。

<html><head>
<title>Forbidden</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Forbidden</h1>
<p>403 Forbidden</p>
</body></html>

403.htmlファイルと同じところにDockerfileを作成し、以下のように書きます。

FROM nginx:latest
ADD ./403.html /usr/share/nginx/html

FROM nginx:latestが元なるイメージです。
そこにADD ./403.html /usr/share/nginx/html
ファイルを追加します。

ENTRYPOINTCMDで実行するコマンドを記載するのですが、
今回は作成元のnginxに書かれているので省略します。

これでDockerfileのあるフォルダで以下を実行すると、イメージを作成できます

docker build -t nginx403:latest

こんな風に出たら成功です。

docker build -t nginx403:latest .
[+] Building 1.8s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.1s
 => => transferring dockerfile: 92B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  0.1s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/nginx:latest                                                    0.0s
 => [internal] load build context                                                                                  0.4s
 => => transferring context: 297B                                                                                  0.0s
 => [1/2] FROM docker.io/library/nginx:latest                                                                      0.9s
 => [2/2] ADD ./403.html /usr/share/nginx/html                                                                     0.2s
 => exporting to image                                                                                             0.2s
 => => exporting layers                                                                                            0.1s
 => => writing image sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                       0.0s
 => => naming to docker.io/library/nginx403:latest                                                                 0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them

docker imagesでイメージnginx403ができていることを確認しましょう。

次にコンテナを作って実行しましょう。

docker run --name nginx1 -d -p 8080:80 nginx403

http://localhost:8080/403.htmlにアクセスアクセスると、
作成した403.htmlを参照できると思います。

まとめ

Dockerfileを利用すると、
Docker Hubなどのコンテナイメージのリポジトリーから元を落としてきて、
変更をかけて地震のアプリを作ることができます。

ここで紹介したのは、ほんの基礎なので、
また色々書いていこうと思います。

作成日:2021-06-05  更新日:2021-06-06