【Docker入門 】④ Dockerfileからイメージを作成する(Download)

Dockerfileを作成して、イメージをビルドする

Dockerfileの基本とイメージのビルド手順をメモします。

本記事で使用するファイルはこちらからダウンロード出来ます。
Dockerfile & remi-php74.repo

環境: Docker version 19.03.8、 Mac OS 10.13.6

Dockerfileとは

Dockerfileは起動するDockerコンテナの元になるイメージ(Docker image)に対して
ミドルウェアのインストールや設定などの手順をあらかじめ記述しておくレシピや雛形のようなファイルです。

Dockerfileからコマンドを使用してイメージを作成する事ができます。
(ビルドという)

作成、ビルド手順

1. Dockerfileの作成

例として、CentOSのDockerイメージを元にPHPとApacheのインストールを行います。

任意の場所にDockerfileを作成します。

Dockerfileは拡張子が無く、テキストエディタ等で「Dockerfile」という名称でファイルを作成すればOKです。

「Dockerfile」

FROM centos:centos7

# php
RUN yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
COPY remi-php74.repo /etc/yum.repos.d/
RUN yum -y install php php-mbstring php-gd php-mysql php-pdo

# apache
RUN yum -y install httpd

ファイル内の項目について

FROM
元にするDocker imageを指定する。
※イメージを持っていなかった場合でもDockerfileを実行する際に自動で取得されるようです。
RUN
実行するコマンドを記述する
COPY
ホスト側のファイルをイメージのパスへコピーする
COPY 「ホストのファイルパス」「イメージのファイルパス」

(今回のもの以外にもDockerfile内で使用できるコマンドはあります)

Dockerfileと同じ場所にPHPのバージョン7系のインストールを有効にするためのファイル「remi-php74.repo」を作成しておきます。

「remi-php74.repo」

# This repository only provides PHP 7.4 and its extensions
# NOTICE: common dependencies are in "remi-safe"

[remi-php74]
name=Remi's PHP 7.4 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php74/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php74/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php74/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

(省略)

2. 作成したDockerfileからイメージをビルドする

Dockerfileの存在する場所で下記のコマンドを実行します。

$ docker build -t php-apache-image .

-tオプションでビルド後に作成するイメージの名前、
後ろにDockerfileの存在する※パスを指定します。

※Dockerfileと同じ場所で実行する場合はカレントを表す.(ピリオド)でOK

ビルドに成功したら、docker imagesコマンドでイメージが作成されている事を確認します。

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
php-apache-image         latest              3b91adc04269        44 minutes ago      659MB

3. 作成したイメージからコンテナを起動する

ビルドしたイメージを元にコンテナを作成、起動
コンテナ名「php-apache-container」

$ docker run -p 8080:80 --privileged -d --name php-apache-container php-apache-image /sbin/init

コンテナの起動に成功したらログイン

$ docker exec -it php-apache-container bash

コンテナへログイン済みの状態で下記のバージョン確認コマンドを実行すると
PHPのバージョン7系とApacheが既にインストールされている事が確認できるはずです。

# php -v
PHP 7.4.9 (cli) (built: Aug  4 2020 08:28:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr  2 2020 13:13:23

既存コンテナからイメージを作成する方法と比べて
設定内容やインストールされているミドルウェア等をDockerfileの内容を見れば確認出来る点が良いと思います。

Follow me!