Docker入門(Dockerfileを使用したサーバ構築)

投稿者: | 2019-09-09
Table of Content

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に具体的にどのような命令が記述できるかを説明します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です