Dockerfile に、Docker Image を構築するための手順を記述する。 命令 (ディレクティブ) は以下の通り。
命令 | 説明 | 例 |
---|---|---|
FROM
| ベースイメージを指定する |
FROM ubuntu:24.04
|
LABEL
| メタデータを付与する |
LABEL maintainer="root@example.com"
|
ARG
|
ビルド時の引数を定義する (--build-arg で渡せる)
|
ARG VERSION=1.0
|
ENV
| 環境変数を定義する。ビルド時もContainer生成時も参照可能。 |
ENV PATH="/app/bin:$PATH"
|
WORKDIR
| 作業ディレクトリを指定する。 |
WORKDIR /app
|
命令 | 説明 | 例 |
---|---|---|
COPY
| ビルドコンテキスト (Dockerfileを置いたディレクトリ) 内からファイルやディレクトリをコピーする |
COPY entrypoint.sh /entrypoint.sh
|
命令 | 説明 | 例 |
---|---|---|
RUN
| ビルド時にコマンドを実行する。 |
RUN apt update && apt install -y curl
|
CMD
| コンテナ実行時のデフォルトコマンドを指定する。 ENTRYPOINT が無い場合のみ実行される。 |
CMD ["python", "test.py"]
|
ENTRYPOINT
| Container 実行時の実行ファイルを指定する。 CMD は ENTRYPOINT の引数として与えられる。 |
ENTRYPOINT [ "bash", "/entrypoint.sh" ]
|
SHELL
| RUN などで使うデフォルトのシェルを指定する。 |
SHELL [ "/bin/bash", "-c" ]
|
命令 | 説明 | 例 |
---|---|---|
USER
| 実行ユーザを変更する。 |
USER guest
|
命令 | 説明 | 例 |
---|---|---|
EXPOSE
|
Container が listen するポート番号を指定する。
実際に公開するには -p オプションが必要。
|
EXPOSE 22
|
VOLUME
|
マウントするボリュームを定義する。
実際にマウントするには -v か -mount オプションが必要。
|
VOLUME /data
|
STOPSIGNAL
| Container に送るシグナルを指定する。 |
STOPSIGNAL SIGKILL
|
LEALTHCHECK
| Container のヘルスチェックを定義する。 |
HEALTHCHECK CMD curl -f http://localhost
|
EXPOSE
や VOLUME
は指定した値を Image の使用者に伝えるという意味を持つ。
指定したからといって何か起きるわけではない。
指定した値は、作成した Image に対して docker image inspect
を実行することで確認できる。
命令 | 説明 | 例 |
---|---|---|
ONBUILD
| 子イメージのビルド時に実行される命令を定義する。 |
ONBUILD COPY abc.sh /app
|
COPY --chown=user:group
| 所有者権限付きでファイルをコピーする。 (古いバージョンの Docker では使えない) |
COPY --chown=root:admin httpd.conf /etc/apache2
|