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

Linuxで独自のコンテナを構築する

コンテナはクラウドで実行されます。これは、コンテナテクノロジーにより、ウェブサイトやウェブアプリが需要の増加に応じて自分自身の新しいコピーを生成できるようになるためです。これが、何億人もの人々が、世界中のトラフィックのプレッシャーの下でサイトが座屈することなく、人気のあるサイトを使用できる理由です。コンテナーはLinuxテクノロジーです。つまり、コンテナーはコード(具体的にはcgroups)に依存しています。 および名前空間)はLinuxカーネルに固有であるため、コンテナーを実行するとLinuxが実行されます。ほとんどの人は、quay.ioやdockerhub.ioなどのサイトのコンテナーイメージを使用して、アプリケーションやユースケースに固有の新しいコンテナーを作成します。しかし、それは一部の人々に疑問を投げかけます。私のコンテナが別の開発者のコ​​ンテナの上に構築された開発者からのものである場合、それらはどこにありますか コンテナはどこから来たの?心配しないでください、それはずっとカメではありません。コンテナを最初から作成できます。Buildahと呼ばれる優れたオープンソースツールがあり、それを支援します。

Linuxコンテナ

  • Linuxコンテナとは何ですか?
  • コンテナ用語の概要
  • ダウンロード:Containers Primer
  • Kubernetesオペレーター:コンテナオーケストレーションプラットフォームの自動化
  • eBook:クラウドネイティブアプリを設計するためのKubernetesパターン
  • Kubernetesとは何ですか?

コンテナの仕様

コンテナは、Linuxコンテナ(LXC)やDockerなどのプロジェクトから生まれました。コンテナとは何かの正式な仕様を維持しているのは、Open Container Initiative(OCI)です。 OCI定義を満たす適切にアセンブルされたコンテナは、Podman、Docker、CRI-OなどのOCI準拠のコンテナエンジンで実行されます。

Buildahのインストール

FedoraおよびCentOSでは、Buildahがすでにインストールされている場合があります。そうでない場合は、パッケージマネージャーを使用してインストールできます:

 $ sudo dnf install buildah 

DebianおよびDebianベースのシステムの場合:

 $ sudo apt install buildah 

Buildahの構成

Buildahはコンテナーを作成するため、そのための環境の構成はPodmanの構成と同じです。 Podmanを使用しているかどうかに関係なく、続行する前に「ルートレス」podman用にシステムを構成してください。

何もないところからコンテナを構築する

誰も以前の作業を基盤として使用せずに新しいコンテナを構築するには、特別な名前scratchを使用します。 空のコンテナを作成することをBuildahに通知します。 scratch 指定は画像名ではありません。これは、既存の画像を使用して作業を行うことを免除されます。

 $ buildah from scratch 

working-containerという名前のこの新しいコンテナ デフォルトでは、少量のメタデータを備えており、文字通り他には何もありません。現在、バックグラウンドで密かに実行されています。 containersで確認できます サブコマンド:

$buildahコンテナ
コンテナIDビルダーID画像名コンテナ名
dafc77921c0c*スクラッチworking-container

コンテナを実行するには、最初にunshareを使用する必要があります サブコマンド(ルートとしてBuildahを実行している場合を除く):

 $ buildah unshare 

作業コンテナに機能がないことを確認します(この場合、失敗が予想される応答):

 $ buildah run working-container sh 
ERRO [0000] container_linux.go:349:コンテナープロセスを開始すると、「exec:\ "sh \":実行可能ファイルが$PATHに見つかりません」

コンテナへの追加

コンテナにコマンドを追加するには、最初にコンテナをマウントする必要があります。コンテナ画像は~/.localに保存されます デフォルトのディレクトリ:

 $ buildah mount working-container 
〜/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged

コンテナを~/.localにマウントした状態 ディレクトリ(または/var/lib/containers/ ルートとして実行している場合)、パッケージマネージャーを使用してパッケージを追加できます。 --releasever コンテナを構築するときに実行しているディストリビューションと一致する必要があります。

 [Fedora] $ sudo dnf install --installroot \ 
〜/.local/share/containers/storage/overlay/b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f/merged \
--releasever 33 \
bash core \
--setopt install_weak_deps =false -y

パッケージを追加する正確な方法は、ディストリビューションとそれが使用するパッケージマネージャーによって異なります。たとえば、Slackwareデスクトップでは、installpkgを使用しています :

 [Slack] $ installpkg --root〜/ .local / share / containers / storage / overlay / b76940e6fe4efad7a0adca3b5399ee12055ddd733bbe273120dcae36a2e6c12f / merged \ 
/tmp/bash-5.0.17-x86_64-1_SMi.txz

これで、コンテナを実行して、シェルを起動するなどの簡単なことを試すことができます。

 $ buildah run working-container bash 
#bash --version
GNU bash、バージョン5.0.17(1)-リリース(x86_64-redhat-linux-gnu)
Copyright( C)2019 Free Software Foundation、Inc.
License GPLv3 +:GNUGPLバージョン3以降

これは無料のソフトウェアです。自由に変更および再配布できます。
法律で許可されている範囲での保証はありません。

コンテナの構成

buildah config サブコマンドを使用すると、コンテナーの起動時に実行するデフォルトコマンド、環境変数の設定、デフォルトシェルの設定、作成者、アーキテクチャ、ホスト名の定義などの一般的な属性にアクセスできます。たとえば、motd.shというシェルスクリプトを含むパッケージを追加したとします。 、コンテナの起動時に実行する必要があります:

 $ buildah config --author "Seth Kenlon" \ 
--os "Slackware" --shell / bin / bash \
--cmd /usr/bin/motd.sh working-container

コンテナの配布

コンテナの作成が完了したら、commitを使用してコンテナをイメージとして保存できます。 サブコマンド。

 $ buildah commit working-container my_image 

Buildahでビルドする

コンテナは魔法のように見えることもありますが、魔法ではありません。それらはゼロから構築されており、イメージが存在すると、他の人がそれを使用して新しいコンテナや別のニッチを埋めるコンテナイメージを構築できるように十分な柔軟性があります。ゼロから始める必要はありませんが、画像の開始方法に興味がある場合、または要件に固有の画像を作成したい場合は、Buildahが使用するツールです。


Linux
  1. Linuxで独自のテクノロジーを構築する

  2. Linuxターミナルで冒険に出かけましょう

  3. LinuxでBashプロンプトをWinterize

  1. これらの4つのツールをLinuxコンテナツールボックスに追加します

  2. 簡単な例で独自の Linux カーネル モジュールを作成する方法

  3. 独自の Kali Linux メタパッケージを作成する

  1. コンテナの基礎となる4つのLinuxテクノロジー

  2. Linuxでプリンタを設定する方法

  3. 独自の Linux カーネルをコンパイルする利点は何ですか?