「インストール - Podman」の版間の差分

ナビゲーションに移動 検索に移動
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>


案内メニュー