MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Podman - Containerfileのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Podman - Containerfile
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == PodmanのContainerfileは、DockerのDockerfileと非常に似ているが、コンテナイメージを作成するためのOCI (Open Container Initiative) 準拠の方法である。<br> <br> Containerfileは、Podmanを使用してコンテナイメージを作成する際の標準的な方法であり、Dockerユーザにとっても馴染みやすい形式となっている。<br> OCI準拠であることから、より広範なコンテナエコシステムでの互換性が確保されている。<br> <br> Containerfileの主要な特徴と要素を以下に示す。<br> <br> * 基本的な構造 *: Containerfileは、Dockerfileとほぼ同じ構文を使用する。 *: 各行は命令 (大文字) とその引数で構成される。 *: <br> * 主要な命令 ** FROM **: ベースイメージを指定する。 ** RUN **: コンテナ内でコマンドを実行する。 ** COPY / ADD **: ホストからコンテナにファイルをコピーする。 ** WORKDIR **: 作業ディレクトリを設定する。 ** ENV **: 環境変数を設定する。 ** EXPOSE **: コンテナがリッスンするポートを指定する。 ** CMD / ENTRYPOINT **: コンテナ起動時に実行されるコマンドを定義する。 *: <br> * Dockerfile との互換性 *: 多くの場合、DockerfileをそのままContainerfileとして使用することができる。 ** ファイル名をContainerfileに変更するだけで、Podmanで使用可能となる。 *: <br> * OCI準拠 *: ContainerfileはOCI仕様に準拠しているため、より標準化されている。 *: これにより、異なるコンテナランタイム間での移植性が向上する。 *: <br> * ルートレス操作 *: Podmanはルートレスモードをサポートしているため、Containerfile内でのルート権限の使用を最小限に抑えることができる。 *: <br> * マルチステージビルド *: Dockerと同様、複数のFROM命令を使用したマルチステージビルドをサポートしている。 *: <br> * ビルドコンテキスト *: Containerfileがある現在のディレクトリがビルドコンテキストになる。 *: .containerignoreファイル (または、.dockerignore) を使用して、不要なファイルを除外できる。 *: <br> * 環境変数とアーギュメント *: ENV命令で環境変数を設定できる。 *: ARG命令でビルド時の変数を定義できる。 *: <br> * ヘルスチェック *: HEALTHCHECK命令を使用してコンテナの健全性チェックを定義できる。 *: <br> * セキュリティ考慮事項 *: USER命令を使用して、特定のユーザとしてコマンドを実行できる。 *: ただし、機密情報の扱いには注意が必要である。 *: <br> * レイヤーとキャッシング *: 各命令は新しいレイヤーを作成して、Podmanはこれらをキャッシュする。 *: 効率的なレイヤー管理により、ビルド時間を短縮できる。 <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では、省略して使用できるContainerfileの名称が予め決まっている。<br> 以下に示すファイル名をデフォルトのコンテナファイルとして認識する。<br> # Containerfile (最優先) # containerfile (小文字) # Dockerfile # dockerfile (小文字) <br> これらのファイルは、<code>-f</code>オプション無しで使用できる。<br> 順序は上から順に検索されて、最初に見つかったファイルが使用される。<br> podman build -t <任意のリポジトリ名>:<タグ名> . <br> ただし、大文字から始まるContainerfile、または、Dockerfileを使用することが推奨される。<br> 小文字から始まるファイル名もサポートされているが、一般的にはほとんど使用されない。<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> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:コンテナ]][[カテゴリ:Web]]
Podman - Containerfile
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse