セクションを選択

Buildah とは

Copy URL

Buildah は Linux ベースのオープンソースツールで、Open Container Initiative (OCI) 互換コンテナのビルドに使用します。ビルドしたコンテナは OCI 互換なので、DockerKubernetes とも互換性があります。Buildah では、任意のツールを使用して効率性の高いコンテナイメージを作成できます。コンテナイメージの作成は、既存のベースイメージを使用することも、空のイメージを基にゼロから作り上げることもできます。Buildah はコンテナイメージを作成する柔軟でセキュアな方法です。以下でもう少し詳しく見ていきます。

Buildah (「builder」をボストン地域の発音で読んだもの) は 2017 年に、Daniel Walsh (ダニエル・ウォルシュ) をリーダーとするチームによって Red Hat で作成されました。この取り組みは、もともとはコンテナイメージのコアユーティリティを作成し、そのツールを既存のコンテナホストツールと組み合わせて使用して OCI および Docker 互換のコンテナイメージをビルドできるようにしようという意図で始められました。イメージはコンテナレジストリに格納し、複数のランタイム環境で使用できます。その際には Docker のもののようなコンテナデーモンを使用することも、使用しないこともできます (Docker のデーモンは root 特権が必要で、ビルドしたコンテナの機能はデーモンの機能に依存します)。 

そうして作成された Buildah は、次のような機能を備えたコマンドラインツールです。

  • Dockerfile (イメージのアセンブルで呼び出すすべてのコマンドを記述したテキストファイル) 使用または不使用でコンテナイメージをビルド 
  • コンテナイメージをゼロから、または既存のコンテナイメージを起点として作成
  • イメージそのものにビルドツールを含めないので、ビルドしたイメージのサイズの節約、セキュリティの強化、転送に使用するリソースの削減が可能 
  • Dockerfile と互換性があり、Docker からの移行が容易
  • ユーザー独自のイメージを作成するので、イメージを作成ユーザーで並べ替えることが可能

Buildah は Dockerfile なしでイメージをビルドできたり、ビルドプロセスに他のスクリプト言語を統合できたりする柔軟性を備えているのに加え、イメージそのものの外部でビルドツールを使用できるという効率性も持ち合わせているので、革新と新しいアイデアの実装を迅速に行うことができます。コンテナイメージの作成とビルドは、イメージの起動に必要なツールとプロセスのみで迅速に行えます。

Buildah では他にも以下のことができます。

  • イメージを検証、確認、修正
  • コンテナとイメージをローカルストレージからパブリックまたはプライベートのレジストリまたはリポジトリにプッシュ
  • Docker Hub にイメージをプッシュまたはプル
  • ローカルに格納されたコンテナイメージを削除
  • 実行中のコンテナの root ファイルシステムをマウントまたはアンマウント
  • コンテナの root ファイルシステムにある更新されたコンテンツを新しいイメージのファイルシステムレイヤーとして使用

Buildah と Podman はどちらもオープンソースプロジェクトであり、相互に補完的に機能するコマンドラインツールです。OCI イメージとコンテナの操作とビルドに使用します。まず Buildah が作られ、その後 Buildah と同じコードを使用して Podman が作られました。ただし Buildah のコマンドは Podman のものより詳細で、イメージのより細かい制御が可能であり、より繊細にイメージレイヤーを作成できます。Podman の build コマンドは Buildah の機能のサブセットを使用しています。 

Buildah はコンテナイメージのビルドを得意としており、デーモン・ソケット・コンポーネントなしで Dockerfile のあらゆるコマンドをレプリケートします。一方で Podman はコンテナ内でイメージのメンテナンスや修正を行うときに必要なことを得意としています。Podman を使用すると、コンテナを作成 (コンテナイメージの提供に Buildah を使用) し、使い慣れたコマンドライン・インタフェース (CLI) コマンドを使用してそれをプロダクション環境で実行、メンテナンス、修正できます (Docker CLI でコマンドを使えるなら、Podman CLI でも同じコマンドを使用して操作できます)。 

Podman と Buildah のもう一つの違いは、Buildah で作成するコンテナはコンテナイメージの内容を転送するための一時的なものであるのに対し、Podman ではユーザーは長時間にわたる使用および維持を意図した従来のコンテナを作成することです。Buildah のコンテナは短時間の用途に適し、Podman のコンテナは長時間の用途に適しています。 

最後にもう一つ。Buildah と Podman はコンテナの内部表現を共有していないため、Buildah のコンテナから Podman のコンテナは見えず、その逆も同様です。ただしコンテナイメージの内部表現は共有しているため、片方のツールで作成、修正、プルしたコンテナイメージはもう一方のツールでも見えますし、使用することもできます。  

Buildah は Red Hat で生まれたプロジェクトであり、時間を節約し生産性を高める貴重な方法としての有用なツールを作るために Red Hat のエンジニアと開発者が協力して取り組んでいます。Buildah は Linux コンテナを扱うすべての人に有用なツールであり、コンテナと Kubernetes については、Red Hat はオペレーティングシステムから自動化まで総合的にカバーしています。 

Red Hat はコンテナを熟知しており、Kubernetes についても同様です。お客様がコンテナ戦略を構築し、すぐにそれを実行するための製品とサービスが Red Hat にはあります。開発者チームをコンテナ向けプラットフォームに移行させる。最高クラスのオペレーティングシステム上でコンテナ・インフラストラクチャを稼動させる。コンテナが生成する大規模データのストレージ・ソリューションを提供する。Red Hat のソリューションには、どんなケースでもお客様の必要なものがすべて揃っています。

Keep reading

Article

What's a Linux container?

A Linux container is a set of processes isolated from the system, running from a distinct image that provides all the files necessary to support the processes.

Article

Containers vs VMs

Linux containers and virtual machines (VMs) are packaged computing environments that combine various IT components and isolate them from the rest of the system.

Article

What is container orchestration?

Container orchestration automates the deployment, management, scaling, and networking of containers.

コンテナの詳細はこちら

製品

エンタープライズ対応の Kubernetes コンテナ・プラットフォームで、ハイブリッドクラウド、マルチクラウド、エッジのデプロイメントを管理するフルスタックの自動運用機能を備えています。

リソース

チェックリスト

コンテナ型アプリケーションの開発:チームと話し合うべき 5 つのトピック

e ブック

Forrester が Red Hat を マルチクラウドコンテナ開発 プラットフォームのリーダーに選出

トレーニング

無料のトレーニングコース

Running Containers with Red Hat Technical Overview

無料のトレーニングコース

Containers, Kubernetes and Red Hat OpenShift Technical Overview

無料のトレーニングコース

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

その他の関連コンテンツ

無料のニュースレター「Red Hat Shares」(英語) では、注目の IT トピックスに関するコンテンツをお届けしています。