コンテナの操作は、多くのユーザーや開発者にとって日常的なタスクです。コンテナ開発者は、コンテナイメージを頻繁に(再)ビルドする必要があることがよくあります。コンテナを開発する場合、イメージのサイズを縮小することを考えたことはありますか?画像を小さくすると、いくつかの利点があります。ダウンロード時に必要な帯域幅が少なくなり、クラウド環境で実行する場合のコストが節約されます。また、Fedora CoreOS、IoT、Silverblue ではコンテナ ワークフローに大きく依存しているため、より小さなコンテナ イメージを使用すると、システム全体のパフォーマンスが向上します。この記事では、コンテナ イメージのサイズを縮小するためのヒントをいくつか紹介します。
道具以下の例で使用されるホスト オペレーティング システムは Fedora Linux 33 です。例では、Podman 3.1.0 と Buildah 1.2.0 を使用します。 Podman と Buildah は、ほとんどの Fedora Linux バリアントにプリインストールされています。 Podman と Buildah がインストールされていない場合は、次のコマンドを使用してインストールできます。
タスク基本的な例から始めましょう。次の要件を満たす Web コンテナーを構築します。
次の手順は、より複雑な画像にも適用されます。 設定まず、プロジェクト ディレクトリを作成します。このディレクトリには、Web サイトとコンテナ ファイルが含まれます。
シンプルなログインページを作成します。このデモでは、次の HTML を index.html ファイルにコピーできます。
この時点で、上記の index.html ファイルをブラウザでテストすることを選択できます。
最後に、コンテナ ファイルを作成します。このファイルの名前は Dockerfile または Containerfile にすることができます。
これで、次のファイル システム レイアウトを持つプロジェクト ディレクトリが作成されます。
建てる次にイメージをビルドします。次の各段階では、画像のサイズを縮小するための改善レイヤーが追加されます。最終的にはイメージのコレクションが作成されますが、Containerfile は 1 つだけになります。 ステージ0: 基本的なコンテナイメージ新しいイメージは非常にシンプルで、必須の手順のみが含まれます。 Containerfile に次の内容を追加します。
上記のファイルには、各行の機能を説明するコメントがいくつかあります。より詳細な手順:
次のコマンドを実行して、プロジェクト ディレクトリから新しいイメージを作成します。
イメージのプロパティを表示するには、次のコマンドを使用します。画像のサイズ(467 MB)に注意してください。
上記の例に示されている画像は現在 467 MB のスペースを占有しています。残りの段階では画像のサイズが大幅に縮小されます。ただし、まずはイメージが期待どおりに動作することを確認してください。 コンテナを起動するには、次のコマンドを入力します。
コンテナを一覧表示するには、次のように入力します。
上記のコンテナーは実行されており、ポート 46191 でリッスンしています。ホスト オペレーティング システムで実行されている Web ブラウザーから localhost:46191 にアクセスすると、Web ページがレンダリングされます。
フェーズ1: キャッシュをクリアし、コンテナから残りのコンテンツを削除するコンテナ イメージのサイズを最適化するには、まず「クリーンアップ」を実行する必要があります。これにより、インストールとパッケージの残りがすべて除去されます。このプロセスに具体的に何が含まれるかは、コンテナーによって異なります。上記の例では、Containerfile を編集して次の行を追加します。
変更された Containerfile をビルドして、イメージ サイズを大幅に削減します (この例では 237 MB)。
フェーズ2: ドキュメントと不要な依存関係を削除するインストール中に、いくつかの弱い依存関係やドキュメントを含む多くのパッケージを削除するよう提案されます。これらは通常、コンテナ内では必要ないので削除できます。 dnf コマンドには、弱い依存関係やドキュメントを含める必要がないことを示すオプションがあります。 Containerfile を再度編集し、dnf install 行にオプションを追加して、アーカイブと弱い依存関係を削除します。
上記の変更された Containerfile をビルドすると、イメージが小さくなります (231 MB)。
フェーズ3: より小さなコンテナベースイメージの使用前の段階を組み合わせることで、サンプル画像のサイズが半分に縮小されました。しかし、画像サイズをさらに縮小する方法はまだいくつかあります。ベースイメージ registry.fedoraproject.org/fedora:33 はユニバーサルです。これは、多くの人が Fedora Linux コンテナにプリインストールしたいと思うパッケージのセットを提供します。ただし、一般的な Fedora Linux ベース イメージで提供されるパッケージでは、通常、さらに多くのものが必要になります。 Fedora プロジェクトでは、基本パッケージのみから始めて、必要なものだけを追加して全体のイメージ サイズを小さくしたい人向けに fedora-minimal イメージも提供しています。 次のように、podman イメージ検索を使用して fedora-minimal イメージを見つけます。
fedora-minimal ベースイメージには DNF が含まれておらず、Python を必要としない小さな microDNF が採用されています。 registry.fedoraproject.org/fedora:33 が registry.fedoraproject.org/fedora-minimal:33 に置き換えられる場合は、microdnf コマンドを使用して dnf を置き換える必要があります。
fedora-minimal を使用して再構築した後のイメージ サイズは次のとおりです (169 MB)。
初期イメージサイズは 467 MB です。上記の各段階で説明した方法を組み合わせて再構築すると、最終的な画像サイズは 169 MB になります。最終的な合計イメージ サイズは、元のベース イメージよりも 182 MB 小さくなります。 コンテナをゼロから構築する前のコンテンツでは、コンテナ ファイルと Podman を使用して新しいイメージを構築します。最後にもう 1 つ、Buildah を使用してコンテナーを最初から構築する方法を紹介します。 Podman は Buildah と同じライブラリを使用してコンテナを構築します。しかし、Buildah は純粋なビルド ツールと見なされます。 Podman は Docker を置き換えるために設計されています。 Buildah を使用して最初から構築されたコンテナーは空であり、何も入っていません。すべてをコンテナの外部からインストールまたはコピーする必要があります。幸いなことに、Buildah の使用は非常に簡単です。以下は、イメージを最初から構築する小さな Bash スクリプトです。このスクリプトを実行するだけでなく、ターミナルでスクリプト内のコマンドを 1 つずつ実行して、各ステップで何が行われるかをよりよく理解することもできます。
あるいは、上記のスクリプトを Buildah に渡してイメージをビルドすることもできます。ルート権限は必要ないことにご注意ください。
最終画像はわずか 155 MB です。攻撃対象領域も縮小されます。最終イメージには DNF (または microDNF) もインストールされません。 結論はより小さなコンテナ イメージを構築することには多くの利点があります。必要な帯域幅、ディスク使用量、攻撃対象領域を削減すると、画像の品質が向上します。少し変更するだけで、画像のサイズを簡単に縮小できます。結果のイメージの機能を変えずに、多くの変更を加えることができます。 必要なバイナリと構成ファイルのみを保存することで、非常に小さなイメージを構築することも可能です。 |
<<: Kafka のコアコンセプトを図解で解説しているので、一目で理解できます。
Raksmart Data Center では、11 月のゴールデン プロモーションとして、次のスー...
百度の幹部である舒迅(@舒迅)はかつて百度鉄址を率いて、1年以内にユーザー登録数が10倍、ページビュ...
進化するテクノロジー環境において、企業はクラウドベースの経済モデルがもたらす大きなチャンスをますます...
SEO 最適化において、301 リダイレクトは頻繁に使用される機能です。その主な目的は、ウェブサイト...
2012 年 5 月 2 日、諸城市は小規模な SEO 求人フェアを開催しました。採用会場は予想ほど...
[[359538]]福田モーター志雲が集合写真を公開[[359539]] 福田汽車グループの副総経...
中国で最も人気のあるウェブマスターフォーラムの1つであるA5は、情報、取引、フォーラムを統合し、大多...
【要点】オンライン教育の本質とは何か?動画教材を並べれば教育プロセスは完了するのか?もちろんそうでは...
11年間運営しているVPSベンダーのvirpusが、Black 5特別価格VPSの独自バージョンをお...
2012年1月11日、今朝、タオバオモールが「Tmall」に名前を変更するというニュースが発表される...
[[420614]]テクノロジー大手の Microsoft は最近、クラウドおよびハイブリッド クラ...
月給5,000~50,000のこれらのプロジェクトはあなたの将来ですSEO担当者の場合、外部リンクに...
中小企業の経営者にとって、ビジネス界における新しいソフトウェアや開発のリスクとチャンスは恐ろしいもの...
2010 年に設立された zetservers は、超高帯域幅の VPS、専用サーバー、デバイス ホ...
この記事では、イスラエルの VPS の推奨事項に焦点を当てて、いくつかのイスラエルの VPS 販売業...