GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコンテナを管理するためのBuildah入門

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のバージョンを知るため。

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著


Linux
  1. Linuxファイアウォールの使用を開始する

  2. Linuxサーバーのセキュリティを開始するための5つのヒント

  3. 相互運用性のためのSambaの使用開始

  1. Linux用の多目的リレーツールであるsocatの使用を開始する

  2. LinuxでPostgreSQLを使い始める

  3. LinuxでSSHを使い始める

  1. Linux用のbtrfsの使用を開始する

  2. GNOMEを使い始めるためのアドバイス

  3. ミニマリスト向けのLinuxデスクトップ:LXQtとLXDEの使用を開始する