起源: コンピュータを再起動すると、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 イメージを操作できるツールです。 ポッドマン 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 コマンドを使用して、実稼働環境でこれらのイメージとコンテナを管理および保守できます。 コンテナ移行 インストール 基本的に、すべての主要なディストリビューションはバイナリ インストール パッケージを提供しており、システム パッケージ管理を使用してインストールできます。
Ubuntuのインストール:
移行手順 まず、cron および CI ジョブ内のすべての docker インスタンスを podman に置き換えました。 最初のステップを完了したら、sysdig を使用して docker への参照をキャプチャし、docker を呼び出す他のものがあるかどうかを確認します。
パフォーマンスを重視する場合、システムの速度が大幅に低下する可能性があります。 これでdockerを削除できます:
または
設定ファイルをクリーンアップします。 /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仮想マシンがゲートウェイにアクセスできない問題のトラブルシューティング
クラウド コンピューティングは、IT 環境の持続可能性にとって不可欠な要素です。エネルギーとリソース...
ルーマニアの VPS 販売業者である Hostsolutions は、著作権を軽視し、価格が安いこと...
超越のヒント: Robleh Jama は経験豊富なアプリ開発者です。彼は「WakeAlarm」、「...
マット・カッツ氏は次のように語った。「スパム報告に遭遇した場合、私たちは舞台裏でSPAMチームを徹底...
SEO を行うウェブマスターは、毎日古いウェブサイトのランキングを最適化する必要がありますが、新しい...
多くのパブリック クラウド プロバイダーは、日常業務で壊滅的な停止を頻繁に経験しており、IT マネー...
テンセントテクノロジーニュース(劉学通)北京時間9月7日、海外メディアの報道によると、テレジオグラフ...
ご存知のとおり、B2C ウェブサイトは、フォーラムや情報ウェブサイトのように人気を集めて広告を販売し...
このほど、51CTOが主催する「中国企業『IT印象◆IT勢いを解放しデジタル時代を加速させる』年度選...
ウェブマスターは、ウェブサイトを運営する際に、Baidu のランキングが 11 位になったり、スナッ...
北京時間7月11日、外国メディアの報道によると、決済処理および情報プラットフォームサービスプロバイダ...
ウェブサイトのランキングを決定する多くの要素の中で、外部リンクは非常に重要な要素です。さらに言えば、...
誰もが今同じような考えを持っているに違いありません。つまり、タオバオとTmallでビジネスをするのは...
2005年に設立されたネパールの電子商取引会社Thuloは、傘下に10のブランドを持っています。同社...
6月9日、鼎東麦菜は正式にニューヨーク証券取引所に上場申請書を提出し、同日、ミスフレッシュもナスダッ...