利点: 1. より迅速な配信と導入; 2. より効率的な仮想化; 3. より簡単な移行と拡張; 4. よりシンプルな管理; 5. 低い CPU/メモリ消費量。欠点: 1. 32 ビット Linux、Windows、または Unix 環境では使用できません; 2. Docker によるディスク管理は比較的制限されています、など。
このチュートリアルの動作環境: linux5.9.8 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker は、新しい仮想化手法として、従来の仮想化手法と比較して多くの利点があります。まず、Docker コンテナは数秒で起動でき、これは従来の仮想マシン方式よりもはるかに高速です。次に、Docker はシステム リソースの使用率が高く、1 つのホスト上で数千の Docker コンテナを同時に実行できます。コンテナーは、コンテナー内でアプリケーションを実行するだけでなく、基本的に追加のシステム リソースを消費しないため、アプリケーションのパフォーマンスが非常に高く、システムのオーバーヘッドが最小限に抑えられます。従来の仮想マシン方式では、10 個の異なるアプリケーションを実行するために 10 台の仮想マシンが必要ですが、Docker では 10 個の分離されたアプリケーションを起動するだけで済みます。
Docker には、次の点で大きな利点があります。
1) より迅速な配信と展開
開発および運用保守 (devops) 担当者が最も望んでいることは、一度作成または構成すれば、どこでも通常どおり実行できることです。開発者は標準イメージを使用して一連の開発コンテナを構築でき、開発完了後、運用および保守担当者はこのコンテナを直接使用してコードをデプロイできます。 Docker を使用すると、コンテナーを迅速に作成し、アプリケーションを迅速に反復し、プロセス全体を可視化できるため、チームの他のメンバーがアプリケーションがどのように作成され動作するかを理解しやすくなります。 Dockerコンテナは軽くて速い!コンテナーの起動時間は数秒であるため、開発、テスト、デプロイにかかる時間を大幅に節約できます。
2) より効率的な仮想化
Docker コンテナの実行には追加のハイパーバイザー サポートは必要なく、カーネル レベルの仮想化であるため、より高いパフォーマンスと効率を実現できます。
3) 簡単な移行と拡張
4) 簡単な管理
5) 低い CPU/メモリ消費量
6) クイック スタート/シャットダウン
7) クロスクラウド コンピューティング インフラストラクチャ
Docker の制限は何ですか?
Docker は全能ではなく、もともと KVM などの仮想化手法の代替となるように設計されたものでもありません。ここでいくつかの簡単な要約を示します:
1) Docker は Linux をベースにしています64bit 32bit linux/Windows/unix 環境では使用できません。
2) LXC は Cgroup などの Linux カーネル機能をベースとしているため、コンテナのゲストシステムは Linux ベースのみとなります。
3) KVM などの仮想化ソリューションに比べて分離性がまだ不十分であり、すべてのコンテナがランタイム ライブラリの一部を共有します。
ネットワーク管理は比較的単純で、主に名前空間の分離に基づいています。
4) cgroup の cpu および cpuset によって提供される cpu 機能は、KVM などの仮想化ソリューションと比較して測定が困難です (そのため、dotcloud は主にメモリに基づいて課金されます)。
5) Docker によるディスク管理は比較的限定的です。
6) コンテナはユーザープロセスが停止すると破棄され、コンテナ内のログなどのユーザーデータを収集するのは不便です。
したがって、上記の制限は次の適用範囲に分類できます。
1 ~ 2 については、Windows ベースのアプリケーションが必要な場合は基本的に合格できます。
3 ~ 5 については、主にユーザーのニーズ (コンテナが必要か VM が必要か) によって決まりますが、Docker が IaaS として使用できないかどうかも判断します。
6-7については、docker自体がサポートしていない機能ですが、他の手段(ディスククォータ、mount –bind)で解決できます。
つまり、コンテナと VM のどちらを選択するかは、分離とリソースの再利用性の間のトレードオフになります。また、たとえ docker 0.7 が非 AUFS ファイル システムをサポートできたとしても、その機能はまだ不安定で、商用アプリケーションでは問題が発生する可能性があります。AUFS の安定版にはカーネル 3.8 が必要なので、dotcloud の成功を再現したい場合は、カーネルのアップグレードを検討するか、サーバー バージョンの Ubuntu に切り替える必要があります (後者は deb アップデートを提供します)。これは、オープンソース コミュニティが ubuntu (カーネル バージョン) をサポートする傾向にある理由でもあります。
拡張知識: Docker のセキュリティ問題
1) Docker 環境のセキュリティ
Docker の勢いは過去 12 か月で非常に熱くなっており、多くの新しいテクノロジーがこれほど業界の関心を集めるのは珍しいと言われています。ただし、この興奮が実際の展開に移されると、企業は Docker のセキュリティに注意を払う必要があります。 Docker を知っている人なら誰でも、Docker がコンテナを使用してリソースを効果的に分離していることを知っています。そのため、コンテナはLinux OSやハイパーバイザーとほぼ同等のセキュリティ運用管理や構成管理を実現します。しかし、セキュリティの運用と管理、機密性、整合性、可用性を備えた共通コントロールのサポートに関しては、Docker にはがっかりするかもしれません。
Docker がクラウド プロバイダー プラットフォーム上で実行される場合、Docker のセキュリティはより複雑になります。クラウドプロバイダーが何をしているのかを知る必要があります。おそらく他のユーザーとマシンを共有しているかもしれません。 Docker コンテナにはセキュリティ要素が組み込まれておらず、Docker のような新興テクノロジーが比較的包括的なセキュリティ対策を講じることは困難ですが、これは将来的に登場しないという意味ではありません。
2) Docker はコンテナ展開のセキュリティを保証します
一部の専門家は、Docker のセキュリティ問題の本質を構成セキュリティに位置付け、Docker の現在の問題は安全なコンテナを構成することが難しいことであると考えています。現在、Docker 開発者は非常に小さなコンテナを作成することで攻撃対象領域を減らしていますが、問題は、本番環境で Docker コンテナを実行している大企業の従業員が、より多くの可視性と制御を必要とすることです。企業が数千または数万の Docker コンテナをデプロイする場合、これらの Docker コンテナが企業のセキュリティ ポリシーに準拠して構成されていることを確認することが重要です。
この問題を解決するには、Docker は Docker コンテナ展開のリアルタイムの可視性を高め、企業が策定したセキュリティ ポリシーを実装する必要があります。一部のベンダーもこの目的のためのソリューションを立ち上げており、オペレーターにリアルタイムの可視性を提供し、仮想インフラストラクチャーのセキュリティー・ポリシーをコンテナー・レベルで適用できるように支援しています。
推奨される学習: 「docker ビデオ チュートリアル」
以上がdocker の長所と短所は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。