Docker イメージが従うべき原則: 1. イメージ最小化の原則; 最も合理化された基本イメージを選択し、イメージ構築の中間生成物をクリーンアップし、イメージ層の数を減らす必要があります。 2. ビルド速度を最大化する原則: イメージを最大限に活用してキャッシュを構築し、構築されたキャッシュを使用してイメージのビルドを高速化します。 3. ネットワークリクエストの最適化に注意してください。
このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker イメージを使用し続けると、プロセス中に注意を払って最適化しないと、イメージのサイズが大きくなってしまいます。ますます大きくなります
Docker を使用してアプリケーションをデプロイする場合、イメージのサイズが少なくとも 1G であることがよくわかります。
イメージのサイズの増加は、コストも増加するだけではありません。ディスク リソースとネットワーク リソースはもちろん、アプリケーションのデプロイメント効率にも影響します。アプリケーションのデプロイメント時間はますます長くなるでしょう。
したがって、デプロイメント効率を向上させ、コストを削減するには、デプロイメント イメージのサイズを削減する必要があります。リソースのオーバーヘッド
イメージの最適化については、dockerfile を最適化することで実現できます
(1) イメージ最小化の原則
#最も効率的な基本イメージを選択します
イメージ構築の中間生成物をクリーンアップする
画像のレイヤー数を減らす
最も基本的なイメージを使用します、
(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 を開始します:
画像を表示して削除してください 役に立たない画像:
まずソース コードから nginx をコンパイルします。手順に慣れたら、コンテナーで nginx を実行できます
:
デバッグを閉じる:
#実行コマンドを表示
:
4. イメージの最適化
最適化のアイデア: RUN を 1 行に記述してミラー層の数を減らす
:Dockerfile を次のように記述します
##最適化のアイデア: 複数段階のビルドを使用する : Dokcerfile 次のように:
最初にコマンド ラインをシミュレートしてデバッグをオフにします:
:
首先我们需要导入一个distroless和nginx镜像 distroless”镜像只包含应用程序及其运行时依赖项,不包含程序包管理器、shell以及在标准Linux发行版中可以找到的任何其他程序 用distroless去除容器中所有不必要的东西
1)从github网站查看例子:
(2)从真机给server1发送东西
(3)导入镜像
(4)编写Dockerfile如下
(5)构建镜像并查看镜像大小
(6)构建容器并测试
查看IP并能正常访问到Nginx默认发布页,证明容器镜像可以正常使用,但只要内网可以访问:
按照查看桥接的工具:
查看桥接:
做端口映射
可以通过外网访问了:
推荐学习:《docker视频教程》
以上がDocker イメージはどのような原則に従う必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。