目次
1. イメージを最適化する必要があるのはなぜですか?
2. イメージを構築するためのいくつかの原則
イメージのフェーズ構築 次に、rhel7 イメージを使用してコンテナを構築し、コンテナに nginx ソース コード パッケージをインストールします。このコンテナを使用して新しいイメージを構築し、それを最適化します
ホームページ 運用・保守 Docker Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?

Nov 25, 2021 pm 03:48 PM
docker

Docker イメージが従うべき原則: 1. イメージ最小化の原則; 最も合理化された基本イメージを選択し、イメージ構築の中間生成物をクリーンアップし、イメージ層の数を減らす必要があります。 2. ビルド速度を最大化する原則: イメージを最大限に活用してキャッシュを構築し、構築されたキャッシュを使用してイメージのビルドを高速化します。 3. ネットワークリクエストの最適化に注意してください。

Docker イメージはどのような原則に従う必要がありますか?

このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。

1. イメージを最適化する必要があるのはなぜですか?

Docker イメージを使用し続けると、プロセス中に注意を払って最適化しないと、イメージのサイズが大きくなってしまいます。ますます大きくなります
Docker を使用してアプリケーションをデプロイする場合、イメージのサイズが少なくとも 1G であることがよくわかります。
イメージのサイズの増加は、コストも増加するだけではありません。ディスク リソースとネットワーク リソースはもちろん、アプリケーションのデプロイメント効率にも影響します。アプリケーションのデプロイメント時間はますます長くなるでしょう。
したがって、デプロイメント効率を向上させ、コストを削減するには、デプロイメント イメージのサイズを削減する必要があります。リソースのオーバーヘッド
イメージの最適化については、dockerfile を最適化することで実現できます

2. イメージを構築するためのいくつかの原則

(1) イメージ最小化の原則

#最も効率的な基本イメージを選択します

イメージ サイズを効果的に削減するには、最小の基本イメージを選択します。例: alpine、busybox など。

イメージ構築の中間生成物をクリーンアップする

イメージの構築プロセス中、dockerfile 命令が実行されると、画像のファイルを削除する必要はありません。

yum を使用してコンポーネントをインストールする場合、最終的に yum clean all image を使用して不要なファイルをクリーンアップしたり、system rm コマンドを使用して不要なソース ファイルなどを削除したりできます。

画像のレイヤー数を減らす

画像は階層的に保存されたファイルであり、画像のレイヤー数にも一定の制限があります。画像のレイヤー番号が一番大きく、レイヤー 127 です。

注意しないと画像がどんどん肥大化してしまいます。

dockerfile を使用してイメージをビルドする場合、dockerfile 内の各命令によってレイヤーが生成されます。

したがって、マージ可能な命令をマージすることで、最終的に生成されるイメージのレイヤーの数を減らすことができます。 dockerfile内で。

例: RUN を使用して dockerfile 内のシェル コマンドを実行する場合、「&&」を使用して複数のコマンドを接続できます。

最も基本的なイメージを使用します

画像は小さいほど効率的です

(2) ビルド速度最大化の原則

画像を最大限に活用するビルド キャッシュ

使用できるビルド キャッシュは、イメージの構築を高速化するために使用されます。Docker ビルドでは、デフォルトでキャッシュが有効になります。キャッシュを有効にするには 3 つの重要なポイントがあります。

ミラーの親レイヤーは変更されておらず、ビルド手順も変更されておらず、追加されたファイルのチェックサムは一貫しています。

ビルド命令がこれら 3 つの条件を満たしている限り、イメージ構築のこの層は再度実行されず、前のビルドの結果が直接使用されます。

あるレイヤーの画像キャッシュが無効になると、それ以降の画像レイヤーのキャッシュも無効になります。

画像キャッシュを最大限に活用できるように、最も変更の少ない部分を Dockerfile の先頭に配置する必要があります。

dockerfile には、キャッシュの無効化を引き起こす可能性のあるコマンド WORKDIR、CMD、ENV、ADD などが含まれています。

これらのコマンドを dockerfile の最後に配置して、キャッシュを最大化することをお勧めします。イメージの構築プロセス中のキャッシュの使用。

ビルド ディレクトリ (デフォルト: Dockerfile が配置されているディレクトリ) 内の不要なファイルを削除します。

ビルド プロセス中に不要なファイルをフィルタリングするための .dockerignore ファイルを作成するか、別のディレクトリを作成します。ディレクトリ内には、イメージ構築プロセス中に必要なファイルのみが存在します。

Docker は、Docker エンジン (つまり、サーバー側のデーモン) と実行時のクライアント ツールに分かれています。

Docker のエンジンは、Docker Remote API と呼ばれる REST API のセットを提供します。

Docker コマンドなどのクライアント ツールは、この API セットを通じて Docker エンジンと対話し、さまざまな機能を実行します。

つまり、表面上はさまざまな docker 関数をローカルで実行しているように見えますが、実際にはすべてリモート呼び出しを使用してサーバー側 (Docker エンジン) で行われます。 docker build コマンドはイメージをビルドしますが、実際にはイメージはローカルにビルドされるのではなく、サーバー上、つまり Docker エンジン内にビルドされます。

イメージを構築するとき、Docker は最初にコンテキストを準備し、必要なすべてのファイルをプロセスに収集する必要があります。

デフォルトのコンテキストには、Dockerfile ディレクトリ内のすべてのファイルが含まれます。

(3) ネットワーク リクエストの最適化に注意する

いくつかのミラー ソースを使用する場合、または dockerfile でインターネット上の URL を使用する場合、

いくつかのソースを使用します。インターネット上で比較的優れたオープンソース サイトを使用すると、時間を節約し、失敗率を減らすことができます。

3. 仮想マシンでソース コードをシミュレートして nginx

选择最精简的基础镜像
减少镜像的层数
清理镜像构建的中间产物
注意优化网络请求
尽量去用构建缓存
ログイン後にコピー

Docker を開始します:

Docker イメージはどのような原則に従う必要がありますか?
画像を表示して削除してください 役に立たない画像:
Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?
まずソース コードから nginx をコンパイルします。手順に慣れたら、コンテナーで nginx を実行できます:

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
デバッグを閉じる:
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?#実行コマンドを表示
:
Docker イメージはどのような原則に従う必要がありますか?4. イメージの最適化

イメージのフェーズ構築 次に、rhel7 イメージを使用してコンテナを構築し、コンテナに nginx ソース コード パッケージをインストールします。このコンテナを使用して新しいイメージを構築し、それを最適化します

(1) 2 つのパッケージを実マシンのserver1 に渡します


Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?最適化のアイデア: RUN を 1 行に記述してミラー層の数を減らす
:Dockerfile を次のように記述します

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?

##最適化のアイデア: 複数段階のビルドを使用する Docker イメージはどのような原則に従う必要がありますか?:
Dokcerfile 次のように: 最初にコマンド ラインをシミュレートしてデバッグをオフにします:



Docker イメージはどのような原則に従う必要がありますか?

Docker イメージはどのような原則に従う必要がありますか?

##最適化のアイデア: 最適化最下層から

Docker イメージはどのような原則に従う必要がありますか?

首先我们需要导入一个distroless和nginx镜像
distroless”镜像只包含应用程序及其运行时依赖项,不包含程序包管理器、shell以及在标准Linux发行版中可以找到的任何其他程序
用distroless去除容器中所有不必要的东西
ログイン後にコピー

1)从github网站查看例子:
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
(2)从真机给server1发送东西
Docker イメージはどのような原則に従う必要がありますか?
(3)导入镜像

Docker イメージはどのような原則に従う必要がありますか?

(4)编写Dockerfile如下
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
(5)构建镜像并查看镜像大小

Docker イメージはどのような原則に従う必要がありますか?
(6)构建容器并测试
Docker イメージはどのような原則に従う必要がありますか?
查看IP并能正常访问到Nginx默认发布页,证明容器镜像可以正常使用,但只要内网可以访问:

Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
按照查看桥接的工具:
Docker イメージはどのような原則に従う必要がありますか?
Docker イメージはどのような原則に従う必要がありますか?
查看桥接:
Docker イメージはどのような原則に従う必要がありますか?
做端口映射Docker イメージはどのような原則に従う必要がありますか?
可以通过外网访问了:
Docker イメージはどのような原則に従う必要がありますか?

推荐学习:《docker视频教程

以上がDocker イメージはどのような原則に従う必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システム アーキテクチャは、ネットワークに接続されたマシン全体にさまざまなコンポーネントを分散することで、スケーラビリティ、パフォーマンス、およびフォールト トレランスを実現します。このアーキテクチャには、アプリケーション サーバー、メッセージ キュー、データベース、キャッシュ、ロード バランサーが含まれます。 PHP アプリケーションを分散アーキテクチャに移行する手順は次のとおりです。 サービス境界の特定 メッセージ キュー システムの選択 マイクロサービス フレームワークの採用 コンテナ管理への展開 サービスの検出

PHPマイクロサービスコンテナ化のアジャイル開発と運用 PHPマイクロサービスコンテナ化のアジャイル開発と運用 May 08, 2024 pm 02:21 PM

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? PIノードティーチング:PIノードとは何ですか? PIノードをインストールしてセットアップする方法は? Mar 05, 2025 pm 05:57 PM

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

DeepSeekをインストールする方法 DeepSeekをインストールする方法 Feb 19, 2025 pm 05:48 PM

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

コンテナ化を通じて Java 関数のパフォーマンスを最適化するにはどうすればよいですか? コンテナ化を通じて Java 関数のパフォーマンスを最適化するにはどうすればよいですか? Apr 29, 2024 pm 03:09 PM

コンテナ化により、次の方法で Java 関数のパフォーマンスが向上します。 リソースの分離 - 分離されたコンピューティング環境を確保し、リソースの競合を回避します。軽量 - 消費するシステム リソースが少なくなり、実行時のパフォーマンスが向上します。高速起動 - 関数の実行遅延を軽減します。一貫性 - アプリケーションとインフラストラクチャを分離して、環境全体で一貫した動作を保証します。

PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? PHP CI/CD を使用して迅速に反復するにはどうすればよいですか? May 08, 2024 pm 10:15 PM

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Dockerコンテナを使用したJavaEEアプリケーションのデプロイ Jun 05, 2024 pm 08:29 PM

Docker コンテナを使用した Java EE アプリケーションのデプロイ: Dockerfile を作成してイメージを定義し、イメージを構築し、コンテナを実行してポートをマップし、ブラウザでアプリケーションにアクセスします。サンプル JavaEE アプリケーション: REST API はデータベースと対話し、Docker 経由でデプロイ後にローカルホストでアクセスできます。

vscode に Docker 拡張機能をインストールする方法 vscode に Docker 拡張機能をインストールする手順 vscode に Docker 拡張機能をインストールする方法 vscode に Docker 拡張機能をインストールする手順 May 09, 2024 pm 03:25 PM

1. まず、インターフェイスを開いた後、左側の拡張機能アイコン ボタンをクリックします。 2. 次に、開いた拡張機能ページで検索バーの場所を見つけます。 3. 次に、マウスで「Docker」という単語を入力して拡張機能プラグインを見つけます。 4最後に、対象のプラグインを選択して右をクリックし、下隅にあるインストールボタンをクリックします。

See all articles