さようならDocker! Podman、Skopeo、Buildah を使用した次世代コンテナ アーキテクチャ

さようならDocker! Podman、Skopeo、Buildah を使用した次世代コンテナ アーキテクチャ

 

起源:

コンピュータを再起動すると、Docker デーモンが複数のコアで CPU 使用率を 100% 占有してしまい、すべてのコンテナを起動できず、サービスが使用できないという状況に遭遇したことがある人も多いでしょう。悲しいことに、私にも同じことが起こりました。前回の記事では、Docker を使用して WP ブログを再構築するための新しいアーキテクチャを紹介しました。 VPS マシンはあまり安定しておらず、頻繁に再起動するため、この問題は再起動中に発生します。 VPS の負荷が非常に高く、コンテナが起動せず、Web サイトにアクセスできません。現時点では、回復する唯一の方法は、すべてのコンテナを強制終了し、デーモン プロセスを再起動することです。問題の原因が Docker デーモンにあり、Docker デーモンが root 権限で起動されていることを理解した後、これはセキュリティ上の問題です。それで解決策は何でしょうか?

Docker にデーモンが必要なのはなぜですか?

ポッドマン、スコペオ、ビルド

これら 3 つのツールはすべて OCI プラン (github/containers) に準拠したツールです。これは主に RedHat によって推進されています。これらは連携して Docker のすべての機能を完了することができ、デーモンやルート権限を持つグループへのアクセスは必要ありません。より安全で信頼性が高く、次世代のコンテナ ツールです。

ポッドマン

Podman は、Docker のサブコマンドのほとんど (RUN、PUSH、PULL など) を置き換えることができます。 Podman はデーモン プロセスを必要としませんが、コンテナーのシステム セキュリティを確保するために、ルート権限でソケットに接続せずに、ユーザー名前空間を使用してコンテナー内のルートをシミュレートします。

Podman は、プルやタグ付けなど、OCI イメージを維持および変更するためのすべてのコマンドと機能に重点を置いています。また、これらのイメージから作成されたコンテナを作成、実行、および保守することもできます。

ビルダ

Buildah は OCI イメージを構築するために使用されます。 Podman はユーザー向けの Docker イメージをビルドすることもできますが、ビルド速度が非常に遅く、vfs ストレージ ドライバーをデフォルトで使用すると大量のディスク領域が消費されます。 buildah bud (Dockerfile を使用して構築) は非常に高速で、オーバーレイ ストレージ ドライバーを使用します。


Buildah は OCI イメージの構築に重点を置いています。 Buildah のコマンドは、Dockerfile 内のすべてのコマンドを複製します。イメージは Dockerfiles を使用して構築でき、ルート権限は必要ありません。 Buildah の最終的な目標は、イメージを構築するための低レベルの coreutils インターフェースを提供することです。 Buildah は Dockerfiles 以外のビルド イメージもサポートしており、他のスクリプト言語をビルド プロセスに統合できます。 Buildah はシンプルな fork-exec モデルに従い、デーモンとしては実行されませんが、golang の包括的な API に基づいており、他のツールに保存できます。

スコピオ

Skopeo は、イメージをプッシュ、プル、コピーすることで Docker および OC イメージを操作できるツールです。

[[274424]]

ポッドマン vs ビルダ

Buildah はコンテナを構築し、Podman はコンテナを実行し、Skopeo はコンテナイメージを転送します。これらは、Github Containers 組織 (github/containers) によって管理されているオープンソース ツールです。これらのツールはいずれも実行にデーモンを必要とせず、またそのほとんどはルート アクセスも必要ありません。

Podman と Buildah の大きな違いの 1 つは、コンテナの概念です。 Podman を使用すると、ユーザーは「従来のコンテナ」を作成できます。ただし、Buildah コンテナーは実際には、コンテナー イメージにコンテンツを追加できるようにするために作成されます。簡単な方法は、buildah run コマンドで Dockerfile 内の RUN コマンドを模倣し、podman run コマンドで関数内の docker run コマンドを模倣することです。

つまり、Buildah は OCI イメージを作成するための効率的な方法であり、Podman を使用すると、使い慣れたコンテナ CLI コマンドを使用して、実稼働環境でこれらのイメージとコンテナを管理および保守できます。

コンテナ移行

インストール

基本的に、すべての主要なディストリビューションはバイナリ インストール パッケージを提供しており、システム パッケージ管理を使用してインストールできます。

  1. Fedora、CentOS: sudo yum -y install podman  
  2. Arch および Manjaro Linux: sudo pacman -S podman

Ubuntuのインストール:

  1. sudo apt-get update -qq
  2. sudo apt-get install -qq -y ソフトウェアプロパティ共通 uidmap
  3. sudo add -apt-repository -y ppa:projectatomic/ppa
  4. sudo apt-get update -qq
  5. sudo apt-get -qq -y podmanをインストールします

移行手順

まず、cron および CI ジョブ内のすべての docker インスタンスを podman に置き換えました。

最初のステップを完了したら、sysdig を使用して docker への参照をキャプチャし、docker を呼び出す他のものがあるかどうかを確認します。

  1. シスディグgrep -w docker

パフォーマンスを重視する場合、システムの速度が大幅に低下する可能性があります。

これでdockerを削除できます:

  1. sudo: yum 削除 docker

または

  1. apt を削除 -y docker-ce

設定ファイルをクリーンアップします。

/etc/apt/* または /etc/yum.repos.d/* 内の Docker を指すソースを削除します。

/etc/docker/*、/etc/default/docker、/var/lib/dockerに残っているファイルを削除します。

docker グループを削除します: delgroup docker

要約する

Podman、Skopeo、Buildah を使用した新世代のコンテナ アーキテクチャは、Docker デーモンによって発生する起動とセキュリティの問題を解決できます。新しいアーキテクチャを使用した後、「デーモンなし」と「sudo アクセスは不要」以外の違いはあまり感じられませんでした。ビルドされたコンテナは、グローバル ディレクトリ (/var/lib/docker) ではなく、ユーザー ディレクトリ (~/.local/containers) に配置されます。つまり、デーモン指向ではなく、ユーザー指向です。 Docker と比較すると、podman pull はすべてのレイヤーを並列にダウンロードします。

<<:  クラウドとオンプレミス: どちらのソフトウェア展開が優れていますか?

>>:  KVM仮想マシンがゲートウェイにアクセスできない問題のトラブルシューティング

推薦する

これらの企業は、ファーウェイのクラウドナレッジコンピューティングソリューションを基盤として、知識の力を解き放ちました。

AIと業界知識の効率的な組み合わせを実現し、インテリジェントなアップグレードを加速することは、現代社...

ランキングがない悩みを解消する医療ステーション運営の新アイデア

医療ウェブサイトを運営している友人は、まだランクインはしているがランキングには入っていないのではない...

sentris-3年間5ドルのVPS価格が急騰していますので、必要な方はお早めにご購入ください!

Sentrisからの最新ニュース:公式の超低価格VPSがまもなく値上げされます。 3月4日までに購入...

クラウド ストレージ製品の簡単な分析

主なクラウド ストレージ製品には、オブジェクト ストレージ、ブロック ストレージ、ネットワーク ファ...

ByteDanceとMetaはメタバースをめぐって争っている

自社の開発上のボトルネックに直面したテクノロジー大手にとって、新技術に「全力で取り組む」のは本能的な...

Kubernetes: ベアメタルと仮想マシンのパフォーマンス比較

この記事では、CPU、メモリ、ストレージ、ネットワーク パフォーマンスの観点から、仮想マシンとベアメ...

Douyuはゲームライブストリーミングにこだわっていますが、それは頑固さですか、それとも単なる幸運ですか?

斗宇の日々はますます厳しくなっていった。斗宇は11月16日、第3四半期の財務報告を発表した。同社の同...

広告、ゲーム、アニメ、電子商取引、誰がビリビリを救えるのか?

北京時間3月3日、香港株式市場が閉まった後、ビリビリの今年度第4四半期の財務報告書が予定通り届いた。...

世界最大の写真取引サイトであるシャッターストックの時価総額は7億6000万ドルである。

Shutterstock は、2003 年に設立され、米国ニューヨークに本社を置くオンライン商業写真...

openvirtuals-4$/512m メモリ/1gvSwap/10gSSD/2T トラフィック

openvirtualsのVPSは中国人の目には不評のはずですが、これは信頼できるので紹介します。O...

HeyteaとNayukiの6つのマーケティング戦略

「ミルクティー」が現代の若者の「精神的な愛好者」であることは否定できず、いつでも好きなときにミルクテ...

5Gがクラウドコンピューティングを変える2つの方法

5G が到来し、ほとんどの人がこの大きな進歩を期待しています。クラウドコンピューティングに関しては、...

Hosteons Salt Lake City の「高性能」 VPS サービス「Ryzen 7950X ベースの HYBRID 専用サーバー」のレビュー

Hosteonsは米国ソルトレイクシティに多数の筐体を設置しています。その中でも、HYBRID De...

Yammerの創設者はシリコンバレーの終焉を予測

Yammer 創設者 David Sacks (写真提供: Tencent Technology)テ...

ギフトとして利用すれば簡単に売上を伸ばせる商品とは?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス6月9日、Yunzhiと...