LoginSignup
0
0

More than 1 year has passed since last update.

メモ〜Dockerfileとは

Posted at

概要

Dockerイメージだけでは不足している情報をコンテナに付け足すための設定ファイル。

コンテナ上でのプロセス作成を効率化するために用いられる。

例えば「dockerを用いてCentOSベースのコンテナを作り、その上にapacheサーバーを立ててphpでhogeと表示する」ことを考えた場合、Dockerイメージに含まれているのはCentOSの情報のみであり、apacheとphpのインストールやサーバーの起動、phpファイルのコンテナへのコピーなどといった作業は手動で行うことになる。

しかし、これらの作業の手順を記したDockerfileを作成しておき、そこからコンテナを作成することで、上記の作業を全て自動で実行することができる。

Dockerファイルを用いたコンテナ作成の手順

  • Dockerファイルの作成
  • 必要なファイル(今回でいえばhogeと出力するためのphpファイル)の用意
  • DockerファイルからDockerイメージを作成
  • コンテナの作成

Dockerファイルの作成〜具体例

Dockerfile
FROM centos:centos7

RUN yum -y install httpd php

COPY test.php /var/www/html/

CMD ["/usr/sbin/httpsd","-DFOREGROUND"]

=========注意=============

  • Dockerファイルのファイル名はDockerファイルとしてください。
  • Dockerファイルはホームディレクトリ以外に作成してください。通っているパスの関係でdockerイメージの作成(後述)に支障が出る場合があります。

=========注意終わり=========

Dockerファイルの作成〜具体例の解説

1行目
FROM centos:centos7

centos:centos7というdockerイメージをベースにしてコンテナを作ることを宣言。

2行目
RUN yum -y install httpd php

apachephpのインストール。

FROMで指定したイメージに対して行う作業にはRUNコマンドをつける必要がある。

3行目
COPY test.php /var/www/html/

test.phpというファイル(hogeと表示するためのファイル)を/var/www/html/というディレクトリにコピーする。

/var/www/html/はdockerコンテナにデフォルトで用意されているファイルの一つ。

apacheの初期設定ではこの/var/www/html/以下に置かれたファイルがWebサイト上で表示されるようになっている。

4行目
CMD ["/usr/sbin/httpsd","-DFOREGROUND"]

コマンドの起動。

`["実行するコマンド", "引数"]とすることで、指定した形式でコマンドが実行される。

今回は作成したapacheサーバーをバックグラウンドで実行している。

Dockerファイルの作成補足〜RUN, COPYとCMDの違い

RUNやCOPYなどのコマンドを直接Dockerfileに記述する場合とCMDコマンドの引数として指定する場合では、コマンドの実行タイミングに違いが出る。

直接記述したコマンドに関してはDockerファイルからDockerイメージを作成する際に実行されるのに対し、CMDの引数に指定したコマンドに関してはDockerコンテナ作成時に実行される。

上記の例ではベースとなったdockerイメージに追加してほしい要素、すなわちapacheのインストールなどはコマンドを直接記述してイメージ作成時に実行されるようにし、サーバーの起動に関してはコンテナ作成時に実行されるようにCMDコマンドで指定している。

Dockerイメージの作成

Dockerファイルが存在するディレクトリにて以下のコマンドを入力する。

% docker build -t dockerイメージの名前:タグ名 .

末尾のコロンはDockerファイルのパス。

タグ名は省略可能(省略した場合はlatestになる)。

Dockerファイル関連のコマンド達

# ベースイメージを指定
# 公式
FROM イメージ名:タグ名
# 例 
FROM centos:centos7

# ベースイメージに対するインストール
# 公式
RUN -y install xxx
# 例
RUN -y install httpd php
# -yをつけることで、ダウンロードファイル容量確認後の処理を継続するかどうかの選択をスキップすることができる
# ここを-tにしてしまうとyes/no選択の部分で処理が中断してしまうので、必ず"-y"をつける

# ファイルのコピー
# 公式
COPY ファイル名 コピー先のディレクトリ
# 例
COPY test.php /var/www/html/

# ファイルの追加
# 公式
ADD コピー元のパス コピー先のイメージのパス
# 例
ADD https://wwww.xxx.com /tmp
# COPYとは異なりURLの指定が可能。また、圧縮ファイルの展開も自動で行われる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0