Dockerイメージ(image)とは

Dockerイメージ(image) は、Dockerコンテナを作成する前のパッケージです。仮想PCは1つマシンのがイメージですが、Dockerはソフトウェアごとにコンテナを起動するので、それぞれイメージが必要です。

イメージの配布と複数起動

例えば、Linux + ApacheMySQLPHPのコンテナを起動するには、それぞれインストール済みのDockerイメージを作成しておきます。イメージを作成することで、コンテナを組み合わせて起動したり、複数コンテナを起動することができます。また第三者に配布することでグループで同じ環境を手に入れることができます。

Dockerfileとは

Dockerfileは、Dockerイメージを作成するスクリプトファイルです。Dockerイメージを作成するとき、ソフトウェアのダウンロード・インストール・設定ファイルのコピーなどの処理を、Dockerfileに決まったルールで記述します。

Dockerfileの命令文

Dockerfileでは、あらかじめ予約された命令文(INSTRUCTION)で設定を記述します。

INSTRUCTION 処理
FROM Dockerイメージの選択 FROM php:8.0.2-apache-buster
ADD ホストからファイル、フォルダをコピー(自動解凍) ADD 000-default.conf /etc/apache2/sites-enabled/
COPY ホストからファイル、フォルダをコピー COPY 000-default.conf /etc/apache2/sites-enabled/
ENV 環境変数の設定 ENV PATH $PATH:/composer/vendor/bin
RUN イメージ内のコマンドを実行 RUN apt-get update
ENTRYPOINT イメージ内のコマンドを実行 ENTRYPOINT ["docker-entrypoint.sh"]
CMD イメージ内のコマンドを実行 CMD ["echo", "Hello Docker"]
EXPOSE ポートの解放 EXPOSE 80 443
LABEL イメージにMETAデータ追加
USER INSTRUCTIONを実行するユーザ USER docker
WORKDIR ワークディレクトリのパス WORKDIR /work/backend
VOLUME Docker内のボリュームをホストにマウント VOLUME /data
STOPSIGNAL コンテナ終了のシグナル送信 STOPSIGNAL signal
MAINTAINER 作成者情報 MAINTAINER

Dockerfileの例

以下はUbuntu 20.04イメージをダウンロード&インストールし、コンテナを起動するとシェルスクリプトが指定した引数で実行されます。

FROM ubuntu:20.04

COPY docker-entrypoint.sh /tmp/

RUN mv /tmp/docker-entrypoint.sh /usr/local/bin; \
    chmod +x /usr/local/bin/docker-entrypoint.sh;

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["echo", "Hello Docker"]

Dockerfileでイメージをビルド

Dockerイメージを作成するには、docker buildコマンドを実行します。オプションがない場合、デフォルトでDockerfileが自動的に読み込まれます。

docker build オプション パス

オプション

docker buildコマンドには以下のオプションがあります。

オプション 動作 備考
-t イメージ名
-f Dockerfile の名称 指定しない場合は、Dockerfile がデフォルトで指定

Web環境構築(Docker編)