1. はじめにBuildah[1]は、Open Container Initiative (OCI)[2]と互換性のあるコンテナを構築するためのLinuxベースのオープンソースツールです。つまり、コンテナはDocker[3]やKubernetes[4]とも互換性があります。Buildahを使用すると、既存のベースイメージまたは空のイメージから、好みのツールを使用して効率的なコンテナイメージをゼロから作成できます。これは、より柔軟かつ安全なコンテナイメージ構築方法です。 Buildahは、2017年にダニエル・ウォルシュ氏とRed Hatのチームによって開発されました。彼らは、コンテナイメージ用の「coreutils」の開発を目指しました。これは、既存のコンテナホストツールと連携してOCIおよびDocker互換のコンテナイメージを構築できるツールです。構築されたイメージはコンテナリポジトリ[5]に保存され、複数のランタイム環境[6]で利用できるようになります。 2. 特徴
3. ビルダとポッドマンBuildahとPodman[9]は、OCIイメージとコンテナの使用とビルドのための補完的なオープンソースプロジェクトであり、コマンドラインツールでもあります。Buildahが最初に開発され、PodmanはBuildahと同じコードをビルドに使用しています。しかし、BuildahのコマンドはPodmanよりもはるかに冗長であり、イメージをより細かく制御し、より洗練されたイメージレイヤーを作成できます。Podmanの「build」コマンドは、Buildahの機能のサブセットを使用しています。 Buildahはコンテナイメージの構築に特化しており、デーモンソケットコンポーネントを除いたDockerfile内のすべてのコマンドを再現します。一方、Podmanはコンテナ内でこれらのイメージを保守および変更するために必要な機能に重点を置いています。Podmanでは、Buildahを使用してコンテナイメージを提供し、コンテナを作成した後、使い慣れたコマンドラインインターフェース(CLI)コマンドを使用できます(Docker CLIでコマンドを実行できる場合は、同じコマンドをPodman CLIでも実行できます)。 PodmanとBuildahのもう一つの違いは、Buildahコンテナは主に、作成中のコンテナイメージにコンテンツを転送するために一時的に作成されるのに対し、Podmanでは、ユーザーが長期的な使用とメンテナンスのために設計された従来のコンテナを作成することです。Buildahコンテナは短期的な目的で使用されるのに対し、Podmanコンテナは長期的な目的で使用されるものです。 Buildah と Podman によって作成されたコンテナーは相互に表示されません。 4. インストール4.1 セントOS sudo yum -yビルドをインストールします4.2 ウブントゥ # Ubuntu 20.10以降 4.3 RHEL7 sudo サブスクリプション-マネージャーリポジトリ--enable=rhel-7-server-extras-rpms 4.4 フェドラ sudo dnf -yビルドをインストールまたは $ sudo rpm - ostree インストール buildah
5. コマンド
6. 例エイリアスを設定する $ vim /root/.bashrc 6.1 コマンドラインからhttpdイメージを構築する 最初のステップは、ベースイメージを抽出し、作業コンテナを作成することです。 fedoraからの$ buildah 作業コンテナにパッケージを追加する buildah run fedora -動作中-コンテナ dnf install httpd - y 特定のコンテンツを含む Web サーバーの作業ディレクトリを作成します。 mkdir デモ- httpd && cd デモ- httpd && echo 'サンプルコンテナ' > index .html ローカルファイルを作業コンテナにコピーする buildah コピー fedora -動作中-コンテナ index .html / var / www / html / index .html アプリケーションを起動するためのコンテナ エントリ ポイントを定義します。 buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" fedora 作業コンテナ設定後、イメージを保存します。 buildah コミット fedora -動作中-コンテナ fedora - myhttpd ローカルミラーの一覧 $ ビルドア画像 新しく生成されたイメージを使用して、podman を使用してコンテナをローカルで実行できるようになりました。 ポッドマン実行- tid fedora - myhttpd テスト $ p exec -ti heuristic_solomon curl http : //ローカルホスト イメージをローカル Docker リポジトリにプッシュするには、次の手順を実行します。 #倉庫にログイン 次のようにすることもできます: buildah push --creds registryuser:registryuserpassword fedora-myhttpd docker://192.168.10.80:5000/testuser/fedora-myhttpd:latestSkopeoの検査結果 $ skopeo inspect docker : // 192.168 .10 .80 : 5000 / testuser / fedora - myhttpd :最新 6.2 Dockerfileビルド $ mkdir fedora - http - server && cd fedora - http - server # 最近リリースされた Fedora をベースに 終了するには CTRL+X を押し、保存するには Y を押し、nano を終了には Enter を押します。 建てる buildah bud - t fedora - http -サーバー コンテナの実行 podman run -p 8080 : 80 - tid fedora - http -サーバー テストアクセス curl ローカルホスト: 8080 6.3 イメージ構築スクリプト(Dockerfileの代わりに)
# !/ usr / bin / env bash イメージをビルドします。 chmod 755 build_buildah_upstream .sh コンテナの実行: $ podman run buildahupstream buildah バージョン 参照:
参考リンク[1] ビルドア:https://buildah.io/ [2] コンテナ: https://www.redhat.com/en/topics/containers/whats-a-linux-container [3] Docker: https://www.redhat.com/en/topics/containers/what-is-docker [4] Kubernetes: https://www.redhat.com/en/topics/containers/what-is-kubernetes [5] コンテナレジストリ: https://www.redhat.com/en/topics/cloud-native-apps/what-is-a-container-registry [6] ランタイム環境: https://www.redhat.com/en/topics/cloud-native-apps/what-is-a-Java-runtime-environment [7] Dockerfiles: https://blog.csdn.net/xixihahalelehehe/article/details/107517710 [8] Dockerハブ: https://hub.docker.com/ [9] ポッドマン:https://podman.io/ [10] インストール手順の詳細については、次のリンクを参照してください:https://github.com/containers/buildah/blob/main/install.md [11] buildah-add(1): /https://github.com/containers/buildah/blob/main/docs/buildah-add.1.md [12] buildah-build(1): https://github.com/containers/buildah/blob/main/docs/buildah-build.1.md [13] buildah-commit(1): https://github.com/containers/buildah/blob/main/docs/buildah-commit.1.md [14] buildah-config(1): https://github.com/containers/buildah/blob/main/docs/buildah-config.1.md [15] buildah-containers(1): https://github.com/containers/buildah/blob/main/docs/buildah-containers.1.md [16] buildah-copy(1): https://github.com/containers/buildah/blob/main/docs/buildah-copy.1.md [17] buildah-from(1): https://github.com/containers/buildah/blob/main/docs/buildah-from.1.md [18] buildah-images(1): https://github.com/containers/buildah/blob/main/docs/buildah-images.1.md [19] buildah-info(1): https://github.com/containers/buildah/blob/main/docs/buildah-info.1.md [20] buildah-inspect(1): https://github.com/containers/buildah/blob/main/docs/buildah-inspect.1.md [21] buildah-mount(1): https://github.com/containers/buildah/blob/main/docs/buildah-mount.1.md [22] buildah-pull(1): https://github.com/containers/buildah/blob/main/docs/buildah-pull.1.md [23] buildah-push(1): https://github.com/containers/buildah/blob/main/docs/buildah-push.1.md [24] buildah-rename(1): https://github.com/containers/buildah/blob/main/docs/buildah-rename.1.md [25] buildah-rm(1): https://github.com/containers/buildah/blob/main/docs/buildah-rm.1.md [26] buildah-rmi(1): https://github.com/containers/buildah/blob/main/docs/buildah-rmi.1.md [27] buildah-run(1): https://github.com/containers/buildah/blob/main/docs/buildah-run.1.md [28] buildah-tag(1): https://github.com/containers/buildah/blob/main/docs/buildah-tag.1.md [29] buildah-umount(1): https://github.com/containers/buildah/blob/main/docs/buildah-umount.1.md [30] buildah-unshare(1): https://github.com/containers/buildah/blob/main/docs/buildah-unshare.1.md [31] buildah-version(1): https://github.com/containers/buildah/blob/main/docs/buildah-version.1.md [32] Buildahを使用したイメージの構築: https://docs.oracle.com/en/operating-systems/oracle-linux/podman/podman-BuildingImagesWithBuildah.html#buildah-containers [33] Buildahを使ったビルド:Dockerfiles、コマンドライン、スクリプト: https://www.redhat.com/sysadmin/building-buildah |