Dockerではインフラの構成管理を「Dockerfile」で記述します。このDockerfileには、ベースとなるイメージに各種ミドルウェアのインストールや設定など、開発したアプリケーションの実行モジュールをデプロイするための、アプリケーションの実行基盤の全ての構成情報を記述します。
この記事では、Dockerfileを使ったサーバ構築・構成管理の手順について説明します。
Dockerfileによる構成管理
Dockerでは、インフラ構成を記述したファイルのことを「Dockerfile」と呼びます。
ここでは、このDockerfileの詳細について説明します。
Dockerfileとは
以前の記事で、コマンドを使ったDockerイメージの操作とコンテナ作成方法について説明しました。
この方法ではダウンロードしたイメージをそのまま実行していました。
Dockerfileを使うことで、ダウンロードしたベースのイメージに加えて、OSの設定やミドルウェアのインストール・パラメータ設定を追加することができます。
Dockerfileには以下のような内容を記述します。
- ベースになるDockerイメージ
- Dockerコンテナ内で行った操作(コマンド)
- 環境変数などの設定
- Dockerコンテナ内で動作させておくデーモン実行
Dockerfileでは、このような、Docker上で動作させるコンテナの構成情報を記述するためのファイルです。
Dockerfileの基本構文
Dockerfileはテキスト形式のファイルで、エディタなどで作成します。拡張子は必要なく、「Dockerfile」という名前のファイルに、インフラの構成情報を記述します。
また、Dockerfile以外のファイル名でも動作します。その際は、Dockerfileからイメージをビルドする際に、ファイル名を明示的に指定する必要があります。
Dockerfileの基本構文は以下のようになっています。
命令 引数
また、命令は大文字でも小文字でも構いませんが、慣例的には、大文字で統一して書きます。
Dockerfileでの主な命令文は以下の表の通りです。
命令 | 説明 |
---|---|
FROM | ベースイメージの設定 |
RUN | コマンド実行 |
CMD | コンテナの実行コマンド |
LABEL | ラベルを設定 |
EXPOSE | ポートのエクスポート |
ENV | 環境変数 |
ADD | ファイル/ディレクトリの追加 |
COPY | ファイルのコピー |
ENTRYPOINT | コンテナの実行コマンド |
VOLUME | ボリュームのマウント |
USER | ユーザーの指定 |
WORKDIR | 作業ディレクトリ |
ARG | Dockerfile内の変数 |
ONBUILD | ビルド完了後に実行される命令 |
STOPSIGNAL | システムコールシグナルの設定 |
HEALTHCHECK | コンテナのヘルスチェック |
SHELL | デフォルトシェルの設定 |
Dockerfileにコメントを描く場合は以下のように,
行の先頭に#を記述すると行全体がコメントになり、行の途中に#を記述すると#以降がコメントになります。
# この行全体がコメントになります。
命令 引数 # この部分だけがコメントになります。(命令文は実行されます。)
Dockerfileの作成
Dockerfileでは、「DockerコンテナをどのDockerイメージから生成するか」の情報を、必ず記述する必要があります。
このイメージをベースイメージと呼びます。ベースイメージは以下の書式で記述します。
FROM [イメージ名]
FROM [イメージ名]:[タグ名]
このFROM命令は必須項目になります。例えば、CentOSのバージョン7をベースイメージに指定してDockerfileを作成するときは、以下のようになります。
FROM centos:centos7
また、タグ名を省略した時は、ベースイメージの最新バージョン(latest)が適用されます。
ここまででDokcerfileの概要と構文の説明を行いました。
次のパートではDockerfileをビルドしてイメージを作成する手順を説明します。
DockerfileからDockerイメージの作成
Dockerfileをビルドすることで、Dockerfileに定義した構成に基づくDockerイメージを作成できます。ここではDockerfileのビルドについて説明します。
Dockerfileからイメージを作成するには、docker build
コマンドを使います。
[タグ名]は生成するイメージに付けるタグ情報のことで、ベースとなるOSのバージョンやイメージのバージョンなどをつけます。
$ docker build -t [生成するイメージ名]:[タグ名] [Dockerfileの場所]
ここで、実際にFROM命令でベースイメージのみを指定した以下のようなDockerfileをビルドする手順を説明します。
「Dockerfile」という名前でファイルを作成し、以下の内容を記述します。
FROM centos:centos7
このDockerfileからsampleというイメージを作成するときは、Dockerfileを作成したディレクトリに移動して、以下のコマンドを実行します。
タグ名に1.0というバージョンをつけておきます。
$ docker build -t sample:1.0 ./
このコマンド例ではDockerfileの場所を相対パスで指定指定ますが、絶対パスで指定することもできます。
Docker image ls
コマンドで確認すると、ベースイメージであるcentos:centos7と生成したsample:1.0の2つのイメージができているのがわかります。
$ Docker image ls
ここまででDockerfileからイメージを作成する方法を説明しました。
次の記事ではDockerfileに具体的にどのような命令が記述できるかを説明します。