「Docker、Docker、Docker 」それは私たちが最近まで使用していたものです。
Dockerは今でも非常に人気があり、間違いありません。しかし、IT業界で知っているように、進化は急速に起こります。これで、 Buildah、Podman、CRI-O、Skopeoが聞こえます。 。
アナロジーに関連したい場合–ブラックベリー、ブルーベリー、ラズベリーなどのさまざまな種類のベリーがありますが、いつか誰かがブルーベリーを選ぶことにします。したがって、 Buildah、Podman、CRI-O 私はbuildahを選ぶことにしました。なんで?他のコンテナプラットフォームと同じくらい面白いからです。
Buildahに飛び込みましょう!
Buildahとは何ですか?
Buildahは、Open Container Initiative(OCI)イメージを構築するためのコマンドラインツールです。 Docker、Podman、Kubernetesなど、お気に入りのコンテナツールのいずれかで使用できます。
Buildahは、コンテナイメージとコンテナを作成、構築、管理、実行するために使用されます。
Buildahを使用すると、イメージまたはスクラッチから作業コンテナーを作成できます。また、作業コンテナーから、またはDockerfileを使用してイメージを作成することもできます。 OCI形式またはアップストリームDocker形式でイメージをビルドできます。コンテナとイメージを変更および削除できます。
Buildahの最も興味深い点は、Buildahが機能するためにデーモンを必要としないことです。だから#bigfatdaemonsにノーと言ってください。デーモンがないことは、コンテナを構築するための継続的インテグレーションと継続的デリバリーに関して特に火花を散らします。
デーモンがないということは、BuildahによってDockerのデーモンを排除してコンテナイメージを構築できることも意味します。しかし、それはBuildahがDockerに組み込むことができないという意味ではありません。 Dockerfileを使用すると、Buildahによってコンテナイメージをビルド、管理、実行できるためです。印象的ですね
LinuxへのBuildahのインストール
Buildahで手を汚す方法を見てみましょう。 Buildahのパッケージは、FedoraおよびCentOSで利用できます。 Linuxディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。ここに一般的なもののいくつかをリストします:
BuildahをFedoraにインストールするには、
を使用します。dnf install buildah -y
CentOSまたはRedHatにBuildahをインストールするには:
yum install buildah -y
UbuntuとDebianにBuildahをインストールするには、ProjectAtomicが提供する公式PPAを使用できます。
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install buildah
Buildahをインストールしたら、それを試してみましょう。
buildahで開始するための基本的なコマンドを次に示します。
Buildahのバージョンを知るため。
buildah --version
最初のタスクは、パブリックまたはプライベートリポジトリからコンテナイメージをプルすることです。イメージをプルするには、buildahは「from」変数を使用します。 「from」変数は、Dockerfileで使用されるものと同じです。違いは、DockerではDockerfileで変数「from」を指定します。Buildahではコマンドラインを介して変数を渡します。
buildah from ubuntu
上記のコマンドでは、Ubuntuが私のコンテナイメージです。出力の最後にUbuntuベースのイメージを正常にプルすると、「ubuntu-working-container」が表示されます。
画像を正常にプルしたことがわかったら、プルした画像のリストを表示することをお勧めします。しかしその前に、「これらの画像はどこに保存されるのか」と疑問に思うかもしれません。プルされたイメージはホスト自体に保存されます。
buildah images
IMAGE NAME IMAGE TAG IMAGE ID CREATED AT SIZE
docker.io/library/ubuntu latest 94e814e2efa8 Mar 12, 2019 00:20 91.4 MB
docker.io/library/fedora latest d09302f77cfc Mar 12, 2019 00:20 283 MB
Dockerコマンドに既に精通している場合は、DockerコマンドとBuildahコマンドの類似点に気付いたかもしれません。たとえば、Dockerでプルされたイメージのリストを表示するには、「dockerimages」コマンドを使用します。
実行中のコンテナのリストを表示するコマンドは次のとおりです。 Buildahでは、コンテナイメージのプルが完全に完了するとすぐに、そのコンテナが実行を開始します。 Dockerと比較する場合、イメージをプルした後、「docker run」を使用してイメージを実行する必要があります。そうすると、コンテナーのみが実行を開始します。
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
1063320d2dc0 * 94e814e2efa8 docker.io/library/ubuntu:latest ubuntu-working-container
978a399e0aa7 * d09302f77cfc docker.io/library/fedora:latest fedora-working-container
実行中のすべてのコンテナをクリーンアップして削除する場合は、以下のコマンドを注意して実行してください。コマンドを実行すると、コンテナが削除されるためです。 Dockerよりもbuildahで取得できる特権は、Dockerでは実行中のコンテナーを削除できませんが、Buildahでは削除できます。 Dockerを使用している間は、最初にコンテナーを停止する必要があります。その後、イメージを削除できるのは私たちだけです。
buildah rm --all
コマンドで行き詰まっている場合は、–helpオプションがあります。
buildah --help
Buildahのいくつかのユースケースを見てみましょう。実践的な実装から始めるために、簡単なものから始めます。そして、Buildahのペースを見つけたら、創造性を注ぎ込み、面白いことをすることができます。
ApacheWebサーバーコンテナイメージの構築[ハンズオン]
サンプルのBuildahプロジェクトで学んだことを試してみましょう。
コンテナ内でApacheWebサーバーを実行するには何が必要だと思いますか?
もちろん、画像、実行中のコンテナ、その他何ですか?さて、私たちが必要とする主なものは、コンテナ内にhttpdパッケージをインストールする必要があるということです。おー!どうすればいいですか?心配ない。教えてあげます。
まず、Linuxディストリビューションイメージをプルしましょう。あなたの好きなものを選んでください。 CentOSベースイメージをプルしました。
buildah from centos
次に、CentOSコンテナ内にhttpdをインストールします。次のコマンドを使用してこれを行うことができます:
buildah run centos-working-container yum install httpd -y
このような出力が表示されます。
私たちがやったことは、コンテナに入れずにhttpdパッケージをインストールしたことです。ガレージに入らずに自転車の部品をセットアップするようなものです。上記のコマンドの出力でわかるように、パッケージは私たちの前にインストールされています。 Buildahは不正行為をしません😉
それでは、カスタムindex.htmlファイルを作成しましょう。
echo "Linux Handbook is interesting !" > index.html
カスタムファイルindex.htmlをディレクトリパス/var/ www / html
にコピーしますbuildah copy centos-working-container index.html /var/www/html/index.html
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889
/ var / www /htmlはどこから来たのか疑問に思われるでしょう。そして、なぜそのディレクトリパスの下にindex.htmlファイルをコピーしたのですか?
httpdパッケージをインストールすると、/ var / www/htmlディレクトリが作成されます。 /var/www/html
Webサーバーのデフォルトのルートフォルダにすぎません。
コンテナを起動するには、エントリポイントを構成する必要があります。 コンテナ用。
buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container
「-dFOREGROUND」オプションを「/usr/ sbin / httpd」とともに使用して、httpdを開始します。 「-DFOREGROUND」が行うことは、httpd/apacheプロセスをバックグラウンドではなくフォアグラウンドで実行することです。バックグラウンドで実行されていないhttpdプロセスの利点は、コンソールにデバッグログを表示できることです。 「-DFOREGROUND」オプションを使用しない場合、Apacheサーバーが起動し、その直後に停止します。
ここで、コンテナ内で行ったことをすべて保存する必要があります。 コミット 私たちのためにそれを行います。
buildah commit centos-working-container Linux-Handbook
Linux-Handbookイメージが利用可能であり、このイメージをレジストリにプッシュして使用できます。
buildah images
IMAGE ID IMAGE NAME CREATED
AT SIZE
9110ae7f579f docker.io/library/centos:latest
Mar 31, 2019 14:36 234.7 MB
49bd5ec5be71 docker.io/library/Linux-Handbook:latest
Apr 4, 2019 17:28 427.7 MB
では、Buildahで手を汚す準備はすべて整っていますか?
ServeshaDudhgaonkar著