ホームページ  >  記事  >  運用・保守  >  Docker イメージはどのような原則に従う必要がありますか?

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

青灯夜游
青灯夜游オリジナル
2021-11-25 15:48:477070ブラウズ

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 までご連絡ください。