コンテナ化テクノロジーが誕生した瞬間から、Docker はこの分野のリーダーになりました。しかし、ある声がますます大きくなっており、それは Docker が「コンテナ」ではないことに関係しています。 Docker は常にコンテナ化テクノロジーの代名詞であり、人々は Docker コンテナについて話しているため、この文は信じられないほどです。
では、なぜ Docker は「コンテナ」ではないと言う人がいるのでしょう?この問題をどう理解すればよいでしょうか?この記事では、なぜ Docker が「コンテナ」ではないのかを、技術的な実装原理と哲学の観点から分析します。
Docker の当初のアイデアはコンテナ化ではなく、LXC (Linux コンテナ) に基づいてカプセル化し、一連の REST API で提示することでした。アプリケーション開発者が使いやすくする、これが Docker の本来の考え方です。 Docker テクノロジーは当初、イメージ イメージ ファイルの送信に基づく単一プロセス プログラムをサポートします。イメージが送信されると、Docker はイメージを通じて 1 つ以上のコンテナーを開始でき、アプリケーション プロセスがコンテナー内で実行されます。
従来の仮想化テクノロジ (VMWare、Virtual Box など) と比較して、Docker はプロセス レベルの分離を使用します。つまり、同じホスト上の複数のコンテナが同じオペレーティング システム カーネルのセットを共有できます。これにより、リソースのオーバーヘッドが大幅に節約され、迅速な導入、迅速な起動、迅速な移行、バージョン管理などの機能を簡単に実現できます。
実際、Docker テクノロジーは元の LXC テクノロジーを改良し、より軽量で強力なコンテナー エンジンにカプセル化しました。この観点から見ると、Docker はネイティブのコンテナ技術ではなく、コンテナをカプセル化して強化したものであるため、Docker は「コンテナ」ではないという人もいます。
さらに、Docker の哲学レベルから考慮すべき別の問題があります。Docker は実際には「コンテナ」をインストール、構成、実行、インストールするわけではありません。 . 管理のこれらの側面を削除します。 Docker では、イメージの構築、更新、バージョン管理は引き続き開発者自身によって管理されます。これは、Docker がコンテナーとイメージを管理するための統合メカニズムを完全に開発していないことを意味しており、多かれ少なかれ手作業が必要です。
さらに、Docker は基盤となるコンテナー テクノロジーを過度にカプセル化しているため、複雑すぎて初心者にとっては混乱しやすくなっています。また、落とし穴や制限が多すぎるため、本来プロセスを簡素化する方法であるコンテナ化が複雑になります。
この観点から、特にエンジニアリング実装レベルから見ると、Docker はまだ機械的に改善する必要があるため、「コンテナ」として分類することはできません。
上記 2 点の答えは「いいえ」なので、Docker システムの性質と特徴は何でしょうか? Docker がアプリケーション環境の展開と管理のためのソリューションであり、コンテナー テクノロジーと密接に関連していることは疑いの余地がありません。 Docker の利点は、優れた操作のシンプルさ、効率的なサンドボックス メカニズム、便利なイメージの作成と共有方法、コンテナのデプロイの利便性にあります。 Docker が人々にもたらすのは、より科学的で、より高速で、より便利なデプロイメント方法です。したがって、Docker は「コンテナー」という乾燥したものではなく、アプリケーション環境のソリューションとみなすことができます。
概要
この記事では、Docker は「コンテナ」ではないと言われる理由を、Docker テクノロジーの実装原理と哲学レベルの 2 つの側面から説明します。実際、Docker はアプリケーション環境の展開と管理のためのソリューションとして定義されています。これは、Docker がコンテナ テクノロジーに取って代わる、またはコンテナ テクノロジーを必要としないという意味ではありませんが、Docker テクノロジーがコンテナ テクノロジーの強化に基づいており、コンテナ テクノロジーの価値をよりよく実現していることを示しています。 Docker の性質と特徴はコンテナではありませんが、Docker によってもたらされる変化はアプリケーション環境管理に大きな進歩をもたらし、大きな利便性と柔軟性をもたらします。
以上がdocker がコンテナではない理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。