Docker

Dockerfileとは?【初心者向け】書き方やイメージの作成方法を解説【Docker入門④】

こんにちは、インフラエンジニアのryuです。

今回は、初心者向けにDockerfileとは何かを説明します。Dockerfileは、Dockerイメージを作成するための設定ファイルです。Dockerfileの概要を理解して、Dockerfileの書き方をマスターしましょう。Dockerfileの書き方やDockerfileからイメージを作成する方法を解説します。

Dockerfileとは?

Dockerfileって何ですか?

Dockerfileとは、Dockerイメージを作成するための設定値が書かれたファイルです。

今回の記事では、Dockerfileについて解説したいと思います。

前回までの記事で、DockerHubからDockerイメージを取得して、コンテナを起動しました。今回はDockerイメージを自分で作成してみましょう。そのために必要なものがDockerファイルです。

以前の記事はこちら↓

ではまず、Dockerfileが何なのか詳しく説明します。

Dockerイメージを作成するために必要なDockerfile

DockerfileとはDockerイメージを作成するために必要な設定ファイルのことです。

この設定ファイルをビルドすることでDockerイメージが作成されます。

dockerfileとは

Dockerfileは、Dockerイメージの基となるファイルです。つまり、プログラムを動作させるサーバーなどの情報が記載されたファイルになります。

Dockerfileの作り方や、ビルドするコマンドも順番に解説します。

Dockerfileの書き方

では、Dockerfileを作成してみましょう。Dockerfileの書き方を解説します。

まず、ファイルを作成します。ファイル名は”Dockerfile”という名前で作成しましょう。

次にファイルの中身を編集しましょう。

FROM nginx

このような感じです。

Dockerfileを作成

Dockerfileの中身について

ファイルの中身について解説します。

FROM」では、イメージの元となるイメージを指定します。nginxはwebサーバーの一つです。

まずはこの状態でDockerイメージを作成しましょう。

Dockerfileでは他にも様々な設定ができます。その他の設定は記事の後半で解説します!

DockerファイルからDockerイメージを作成してみよう!

次に、DockerファイルからDockerイメージを作成してみましょう。使用するコマンドは”docker build”です。

Dockerfileからイメージを作成する

“docker build”コマンドの使い方は以下の通り。

docker build -t nginx .
docker build [option] [path]

実行するとこのようになります。

Dockerfileからイメージを作成

コマンドの最後に「.(ピリオド)」があることに注意してください。これはDockerファイルのある場所を指定します。「.(ピリオド)」は現在いる場所(カレントディレクトリ)を指定しています。

つまりカレントディレクトリにDockerファイルを保存しておく必要があります。

また”-t”のオプションでイメージに名前を付けています。

“docker image ls”コマンドを使用して、イメージが作成されていることを確認しましょう。

このようにnginxのイメージが作成されています。

nginxのイメージが作成

nginxのイメージを起動させてみる

次に作成したイメージを起動させてみましょう。nginxはWebサーバーなので、Webページが見れたら成功です。

イメージを起動させるには”docker run”コマンドを使用します。詳しくは前回の記事で解説しているので、よく分からな方はこちらをご覧ください。

コマンドは以下のようになります。

docker run -d -p 8080:80 --name nginx nginx

前回の記事では無かった“-p”のオプションについて、解説します。“-p”のオプションでローカルPCのポートとコンテナのポートを結び付けます。nginxはtcp/80ポートでWebのリクエストを受け取ります。そのポートと自分のPCをマッピングしています。

イメージはこのような感じです。

dockerイメージのポートを接続

ブラウザで確認してみましょう。ブラウザのURLを入力するところに”http://127.0.0.1:8080″と入力しましょう。そうすると自分のPCの8080ポートにrequestを投げます。

“-p”オプションでローカルPCの8080番ポートとコンテナの80番ポートがマッピングされているため、nginxのWebページがブラウザ上で表示されます。

ここまでで、Dockerファイルを作成して、コンテナ起動の流れを解説しました。次にDockerファイルで使われるコマンドについて解説します。

Dockerfileの文法について

ここからはDockerfileの詳しい書き方を解説します。先ほどの例では、”FROM nginx”しか書いていません。

FROMコマンド以外にもいくつかのコマンドがあります。主な物は以下の通りです。

Dockerfileで使用する主なコマンド

Dockerfileで良く使う設定を紹介します。

  • RUN・・・コマンドの実行
  • CMD・・・コンテナ実行時のデフォルト処理を設定
  • ENV・・・環境変数の設定
  • ADD・・・ファイルの追加
  • ENTRYPOINT・・・コンテナを実行モジュールのようにして実行する設定
  • VOLUME・・・マウントポイントの作成
  • USER・・・後続のコマンドを指定したユーザーで実行
  • WORKDIR・・・

使い方の詳細はDockerのドキュメントをご覧ください。

https://docs.docker.jp/engine/reference/builder.html

Dockerfileのサンプル

こちらがDockerファイルのサンプルになります。nodeのイメージを作成します。

FROM node:latest

WORKDIR /node
COPY . .

RUN npm install \
 && useradd -g node \
 && mv /root/.config /home/node/ \
 && chown -R node:node /scripts /home/node/.config

USER node

CMD ["npm", "start"]

先ほど説明した”docker build”コマンドを使用して、どのようなイメージが作成されるのか確認してみてください。

Dockerfileとは?まとめ

これでDockerファイルの作成方法の解説を終わります。Dockerファイルを自分で設定できるようになると、簡単にインフラを作ることができるので、初心者ぜひ覚えておきましょう!

次回の記事では、今回作成したDockerイメージをDockerHubにpushする方法を解説します。ぜひご覧ください。

Dockerをさらに詳しく勉強したい方はこちらのUdemyの講座が分かりやすいです。

ゼロからはじめる Dockerによるアプリケーション実行環境構築

About me
大手メーカのIT部門→上場ベンチャーでフルスタックエンジニアやってます。エンジニア歴は8年目。 サーバ、ネットワーク、セキュリティ、クラウドについて投稿します。 AI、ARも勉強中です! youtubeでも技術ネタを発信していきます。↓のアイコンよりご覧ください!

UdemyでIT講座をチェック!

  • セールだと1500円前後!
  • 無料サンプル講義動画・無料講義動画あり!
  • 気に入らなければ30日間返金保証!