|
|
559行目: |
559行目: |
| <br> | | <br> |
| <code>-v</code>オプション、<code>VOLUME</code>、<code>volumes</code>で指定する場合に関しても、基本的には上記のいずれかを扱っている。<br> | | <code>-v</code>オプション、<code>VOLUME</code>、<code>volumes</code>で指定する場合に関しても、基本的には上記のいずれかを扱っている。<br> |
| <br><br>
| |
|
| |
| == Containerfile ==
| |
| ==== Containerfileとは ====
| |
| Containerfileは、コンテナイメージの作成手順を自動化する設定ファイルである。<br>
| |
| コンテナエンジン (Podman、Buildah、Docker) は、Containerfileから指示を読み取り、イメージの作成に必要なステップを自動化する。<br>
| |
| イメージを構築を自動化するには、Containerfileというファイルを作成する必要がある。<br>
| |
| <br>
| |
| Containerfileには、コンテナを構築するためのベースになる環境、実行するコマンド、配置するファイル等が記述されている。<br>
| |
| Containerfileには、Containerfileを含むコンテキストディレクトリのパスを引数として、<code>buildah bud</code>、<code>podman build</code>コマンドを呼び出す。<br>
| |
| PodmanおよびBuildahのデフォルトはContainerfileであり、Dockerfileにフォールバックする。<br>
| |
| <br>
| |
| Containerfileは、Dockerfileと同じシンタックスをサポートしている。<br>
| |
| <br>
| |
| Containerfileで作成したPodmanイメージを[https://quay.io Quay.io]にアップロードすることも可能である。<br>
| |
| <br>
| |
|
| |
| ==== イメージの構築 ====
| |
| podman build -t <任意のリポジトリ名>/<任意のタグ名> .
| |
|
| |
| # Containerfileのパスを指定する場合
| |
| podman build -t <任意のリポジトリ名>/<任意のタグ名> -f <Containerfileのパス>
| |
| <br>
| |
| ==== シンタックス ====
| |
| ===== FROM =====
| |
| FROM <pullするイメージ名>:<タグ名>
| |
|
| |
| # 別名を指定する場合
| |
| FROM <pullするイメージ名>:<タグ名> AS <別名>
| |
|
| |
| #
| |
| FROM <pullするイメージ名>@<ダイジェスト名>
| |
|
| |
| # 別名を指定する場合
| |
| FROM <pullするイメージ名>@<ダイジェスト名> AS <別名>
| |
| <br>
| |
| ===== MAINTAINER =====
| |
| MAINTAINERは生成されたイメージの作者フィールドを設定する。<br>
| |
| ユーザにサポートのためのEメールもしくはURLを提供する場合に使用する。<br>
| |
| MAINTAINER <作者名> <メールアドレス>
| |
| <br>
| |
| ===== USER =====
| |
| コンテナ内のユーザを指定する。<br>
| |
| # ユーザをrootにする
| |
| USER root
| |
| <br>
| |
| ===== WORKDIR =====
| |
| 作業ディレクトリを追加する。<br>
| |
| WORKDIR <作業ディレクトリパス>
| |
| <br>
| |
|
| |
| ===== ARG =====
| |
| Containerfile内で使用する変数を定義する。
| |
| # 変数を定義する場合
| |
| ARG <変数名>
| |
|
| |
| # 変数を定義して値を代入する場合
| |
| ARG <変数名>=<値>
| |
| <br>
| |
| ===== ENV =====
| |
| 環境変数を定義する。<br>
| |
| ENV <環境変数名> <値>
| |
| # または
| |
| ENV <環境変数名>=<値>
| |
| <br>
| |
| ===== ADD =====
| |
| イメージにファイルやディレクトリを追加する。<br>
| |
| # ファイルまたはディレクトリを1つ追加する場合
| |
| ADD <ホスト側のファイルまたはディレクトリのパス> <コンテナ側のファイルまたはディレクトリのパス>
| |
|
| |
| # ファイルまたはディレクトリを複数追加する場合
| |
| ADD <ホスト側のファイルまたはディレクトリのパス 1> <ホスト側のファイルまたはディレクトリのパス 2> ... <コンテナ側のファイルまたはディレクトリのパス>
| |
|
| |
| # []で囲むこともできる
| |
| ADD ["<ホスト側のファイルまたはディレクトリのパス 1>", "<ホスト側のファイルまたはディレクトリのパス 2>" ... "<コンテナ側のファイルまたはディレクトリのパス>"]
| |
| <br>
| |
| ===== COPY =====
| |
| ホスト側のファイルおよびディレクトリをイメージに複製する。<br>
| |
| # ファイルまたはディレクトリを1つ追加する場合
| |
| COPY <ホスト側のファイルまたはディレクトリのパス> <コンテナ側のファイルまたはディレクトリのパス>
| |
|
| |
| # ファイルまたはディレクトリを複数追加する場合
| |
| COPY <ホスト側のファイルまたはディレクトリのパス 1> <ホスト側のファイルまたはディレクトリのパス 2> ... <コンテナ側のファイルまたはディレクトリのパス>
| |
|
| |
| # []で囲むこともできる
| |
| COPY ["<ホスト側のファイルまたはディレクトリのパス 1>", "<ホスト側のファイルまたはディレクトリのパス 2>" ... "<コンテナ側のファイルまたはディレクトリのパス>"]
| |
| <br>
| |
| ===== EXPOSE =====
| |
| コンテナ実行時にリッスンするポート番号を指定する。<br>
| |
| # ポートを1つ開放する場合
| |
| EXPOSE <ポート番号>
| |
|
| |
| # ポートを複数開放する場合
| |
| EXPOSE <ポート番号 1> <ポート番号 2> ...
| |
| <br>
| |
| ===== ENTRYPOINT =====
| |
| コンテナの起動時に実行する処理を指定する。<br>
| |
| # 実行可能コマンドを指定する
| |
| # 実行可能コマンドは、フルパスを指定しなければならない。
| |
| ENTRYPOINT ["<実行可能コマンド>", "<引数 1>", "<引数 2>", "<引数...>"]
| |
|
| |
| # シェルで実行するコマンドを指定する : /bin/sh -c "<コマンド> <引数 1> <引数 2> <引数...>"
| |
| ENTRYPOINT <コマンド> <引数 1> <引数 2> <引数...>
| |
| <br>
| |
| ===== RUN =====
| |
| RUNには2つのシンタックスがある。<br>
| |
| # 実行可能コマンドを指定する
| |
| # 実行可能コマンドは、フルパスを指定しなければならない。
| |
| RUN ["<実行可能コマンド>", "<引数 1>", "<引数 2>", "<引数...>"]
| |
|
| |
| # シェルで実行するコマンドを指定する : /bin/sh -c "<コマンド> <引数 1> <引数 2> <引数...>"
| |
| RUN <コマンド> <引数 1> <引数 2> <引数...>
| |
| <br>
| |
|
| |
| ===== RUN mounts =====
| |
| コンテナにファイルシステムをマウントする。<br>
| |
| 現在サポートされているマウントの種類は、bind、cache、secret、tmpfsである。<br>
| |
| <br>
| |
| * RUN mountsの全体のオプション
| |
| ** src / source
| |
| **: ボリュームおよびbindのマウント元のパスを指定する。 (<u>bindでは必須である</u>)
| |
| **: <code>from</code>を指定する場合、<code>src</code>は<code>from</code>フィールドのサブパスになる。
| |
| ** dst / destination / target
| |
| **: マウント先の指定する。
| |
| ** ro / read-only
| |
| **: <code>true</code> (デフォルト) または <code>false</code>を指定する。
| |
| *: <br>
| |
| * マウントの種類がbindのみの設定
| |
| ** bind-propagation
| |
| **: <code>shared</code>、<code>slave</code>、<code>private</code>、<code>rshared</code>、<code>rslave</code>、<code>rprivate</code> (デフォルト)
| |
| ** bind-nonrecursive
| |
| **: 再帰的なバインドマウントを設定しない。
| |
| **: デフォルトでは再帰的である。
| |
| ** from
| |
| **: src / sourceのルートのステージ名またはイメージ名を指定する。
| |
| **: デフォルトはビルドコンテキスト。
| |
| ** rw / read-write
| |
| **: マウントへの書き込みを許可する。
| |
| *: <br>
| |
| * マウントの種類がtmpfsのみの設定
| |
| ** tmpfs-size
| |
| **: tmpfsマウントのサイズ (バイト)。
| |
| **: Linuxのデフォルトでは無制限である。
| |
| ** tmpfs-mode
| |
| **: tmpfsのファイルモードを8進数で指定する。
| |
| **: Linuxのデフォルトは<u>1777</u>である。
| |
| ** tmpcopyup
| |
| **: tmpfsマウントによりシャドウされるパスは、tmpfs自体に再帰的にコピーされる。
| |
| *: <br>
| |
| * マウントの種類がcacheのみの設定
| |
| ** id
| |
| **: 特定のidに対して、個別のキャッシュディレクトリを作成する。
| |
| ** mode
| |
| **: 新しいキャッシュディレクトリのファイルモード (8進数) を指定する。
| |
| **: デフォルトは<u>0755</u>である。
| |
| ** ro / readonly
| |
| **: キャッシュの読み取り専用となる。
| |
| ** uid
| |
| **: キャッシュディレクトリのuid。
| |
| ** gid
| |
| **: キャッシュディレクトリのgid。
| |
| ** from
| |
| **: src / sourceのルートのステージ名を指定する。
| |
| **: デフォルトはホストキャッシュディレクトリである。
| |
| ** rw / read-write
| |
| **: マウントへの書き込みを許可する。
| |
| <br>
| |
| RUN mounts type=<マウントの種類>,<ホスト側のパス>:<コンテナ側のパス>
| |
|
| |
| # マウントの種類はbind、ホスト側のパスは/tmp/sample1、コンテナ側のパスは/tmp/sample2の場合
| |
| RUN mounts type=bind,source=/tmp/sample1,destination=/tmp/sample2
| |
|
| |
| # マウントの種類はtmpfs、サイズは512[MB]、コンテナ側のパスは/tmp/directoryの場合
| |
| RUN mounts type=tmpfs,tmpfs-size=512M,destination=/tmp/directory
| |
|
| |
| # マウントの種類はsecret、IDはmysecret、コンテナ側のsecretのパスは/tmp/secret/mysecretの場合
| |
| RUN mounts type=secret,id=mysecret cat /run/secrets/mysecret
| |
| <br>
| |
| ===== CMD =====
| |
| ContainerfileのCMDは1つのみ指定できる。<br>
| |
| 複数のCMDが記述されている場合は、最後のCMDのみが有効になる。<br>
| |
| <br>
| |
| CMDには3つのシンタックスがある。<br>
| |
| # 実行可能コマンドを指定する
| |
| # 実行可能コマンドは、フルパスを指定しなければならない。
| |
| # 例: CMD ["/usr/bin/wc","--help"]
| |
| CMD ["<実行可能コマンド>", "<引数 1>", "<引数 2>", "<引数...>"]
| |
|
| |
| # 実行可能ファイルを省略する場合は、ENTRYPOINTにデフォルトの引数を指定する
| |
| CMD ["<引数 1>", "<引数 2>", "<引数...>"]
| |
|
| |
| # シェルで実行するコマンドを指定する : /bin/sh -c "<コマンド> <引数 1> <引数 2> <引数...>"
| |
| # 例: CMD echo "This is a test." | wc -
| |
| CMD <コマンド> <引数 1> <引数 2> <引数...>
| |
| <br><br> | | <br><br> |
|
| |
|