【docker】dockerファイルについて

dockerファイルはベースのイメージを元にdockerイメージを生成してくれます。

例えばCentOsのイメージにphp、apacheをインストールし、コンテナ起動時にapacheを起動状態にするイメージを作成できます。
今回は、dockerファイルで指定する基本的なコマンドを説明します。
なお、以下が理解出来た後に、当項を読むことをお勧めします。

イメージ作成

dockerファイルからdockerイメージを作成します。
dockerイメージの作成には buildコマンド を使用します。
dockerfile というファイル名で任意のディレクトリにファイルを保存し、dockerfile が存在するディレクトリのパスを指定し buildコマンド を実行します。
buildする際にdockerイメージに名前を指定します。”イメージ名:タグ名”の形式です。
以下は、カレントディレクトリに dockerfile が存在し、dockerイメージの名前を”php7.1″としタグ名を”1″として、 buildコマンド を実行する例です。

docker build -t php71:1 .

dockerfileの例

以下はdockerfileの例になります。
なお、このdocekrファイルはビルドに失敗するので使用しないで下さい。

# イメージを指定する。
FROM amazonlinux

# ビルド時のコマンド実行(wgetをインストールする。)
RUN yum install -y wget

# コンテナへファイルを追加する。
ADD ./composer-install.sh /home/tmp/composer-install.sh

# コンテナへファイルをコピーする。
COPY ./composer-install.sh /home/tmp/composer-install.sh

#ポート80を開ける。
EXPOSE 80

#コンテナを起動した時にapache起動する。
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

以降は、dockerファイルの内容についての説明となります。

ベースイメージ

使用するイメージを指定します。
“イメージ名:タグ名”で指定できます。
タグ名は省略可能です。
以下の例は docker hub で公開されているamazonLinuxイメージを使用します。

FROM amazonlinux

ビルド時のコマンド実行

RUNコマンド は、buildコマンド を実行する際に、実行されるコマンドを指定出来ます。
RUNコマンド は複数回使用出来ます。
以下は yumを使用してwgetをインストールする例です。

RUN yum install -y wget

ファイルの追加

ADDコマンド でホストOSのファイルをコンテナに追加出来ます。
ADDコマンド の場合、圧縮ファイルは自動的に解凍されます。
以下は、ホストOSに存在するシェルスクリプトをゲストOSへ追加する例です。

ADD ./composer-install.sh /home/tmp/composer-install.sh

なお、外部のファイルもコンテナに追加出来ます。
例えばGitコマンドで外部のソースコードをダウンロードしたい場合、ADDコマンド を使用します。

ファイルのコピー

COPYコマンド は、ホストOSのファイルをコピーします。
自動的に解凍を行いません。

COPY ./composer-install.sh /home/tmp/composer-install.sh

ポートの開放

ポートを開放します。

EXPOSE 80

コンテナ起動時のコマンド実行

CMDコマンドRUNコマンド とは違い、コンテナ起動時に実行されます。
RUNコマンド と違い、1回しか指定出来ません。
以下は、コンテナ起動時にwebサーバを起動する例です。

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

最後に

使用可能なコマンドは他にもあります。
次回はPHP開発環境を作成する為のdockerファイルの記述例を紹介します。

© DeNnie.Lab All Rights Reserved.