4.
Dockerfileとビルド
Dockerイメージ(image)とは
Dockerイメージ(image) は、Dockerコンテナを作成する前のパッケージです。仮想PCは1つマシンのがイメージですが、Dockerはソフトウェアごとにコンテナを起動するので、それぞれイメージが必要です。
イメージの配布と複数起動
例えば、Linux + Apache、MySQL、PHPのコンテナを起動するには、それぞれインストール済みの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 がデフォルトで指定 |