Docker

【初心者向け】Dockerfileとはなんぞや

Dockerfileとは?

最近巷で話題になっているDocker。単語は聞いたことがありますが、詳しく聞かれると頭からすっぽ抜けてたりします。そこで、今回はDockerの中でも重要なDockerfileについて基本的な部分を確認(復習)していきたいと思います。
おさらいとして、Dockerfileとは一般的に

・DockerfileからDocker imageを作成する設計図
・”Dockerfile”という名前のテキストファイル
・コンテナの構成情報を記述するためのファイル

などのことを言います。

Dockerfileの構文

基本的には”INSTRUCTION arguments”の構文になります。
※命令は大文字でも小文字でも大丈夫ですが、基本的に大文字の方が見かけられるので大文字で記載します。

FROM ベースイメージの指定
RUN コマンド実行
CMD コンテナの実行コマンド
LABEL ラベルの設定
EXPOSE ポートを指定
ENV 環境変数
ADD ファイル(ディレクトリ)の追加
COPY ファイルコピー
ENTRYPOINT コンテナの実行コマンド
VOLUME ボリュームのマウント
USER ユーザの指定
WORKDIR 作業ディレクトリ
ARG Dockerfile内の変数
ONBUILD ビルド時に実行される命令
STOPSIGNAL システムコールシグナルの設定
HEALTHCHECK コンテナのヘルスチェック
SHELL シェルの設定

尚、コメントはPythonと同じく「#」で記載できます。

試しに簡単なDockerfileを作成してみます。
どこでもいいので「Dockerfile」というファイルを作成します。(筆者は~/Desktop/docker/Dockerfileに作成)

FROM ubuntu:latest
RUN touch test

と記載します。
そして、Dockerfileがあるフォルダに移動したあとに以下のコマンドを入力します。

docker build <directory>
→docker build . #今回ではこの形

上の画像の「build」の後に「.」がありますが、これはカレントディレクトリを表しているものです。今回は既にDockerfileがあるディレクトリ(ここでは~/Desktop/docker)に移動してから「docker build 」というコマンドを入力するため、「.(カレントディレクトリ)」でOKというわけです。
この方法で作成したDocker imageは名前もタグもの状態で作成されます(※名前もタグもまだ決まってないimageをdanglingimageと呼びます)。このの名前だとわかりずらいと思うので、次は名前とタグを命名したいと思います。下記コマンドを入力してみてください。

docker build -t <イメージ名>:<タグ名> Dockerfileの場所 .
→docker build -t sample:latest .

先ほど命名せずにDocker imageを作成したコマンドと少し違うのが分かると思います。今回は「docker build [オプション] 」という形式で入力しました。
[オプション]では「-t」を使用しており、これは後ろに「”名前:タグ” 形式で名前とオプションのタグを指定」と記述することができます。これにより、上記のコマンド入力では「名前:sample」「タグ:latest」のイメージが作成されたというわけです。

今回の内容は以上となります。
次回は「Dockerfileの書き方(基本編)」について勉強していきます。