ホームページ >バックエンド開発 >C#.Net チュートリアル >docker とは一体何ですか? なぜこれほど人気があるのでしょうか? その長所と短所は何ですか?
ドッカーとは何ですか?
簡単に言うと、Docker は GO 言語で書かれたプログラムによって実行される「コンテナ」(Linux コンテナ、LXC)です。現在のクラウド サービスの基礎は、同じ上で複数のコンテナを仮想化するオペレーティング システム レベルの分離です。物理サーバー。 Docker はアプリケーション レベルの分離を実装します。これにより、基本的な開発および運用単位が、仮想ホスト (VM) を直接操作することから、オペレーティング プログラムが実行される「コンテナ」に変更されます。
Docker は、開発者とシステム管理者が分散アプリケーションを公開および実行するために設計されたオープン プラットフォームです。 2 つの部分で構成されます:
Docker Engine: ポータブルで軽量なランタイム環境とパッケージ マネージャー。 (注* シングル OS とシングル スレッド。特に NodeJS に似ていますか?)
Docker Hub: 自動化されたワークフローの作成とアプリケーションの共有のために作成されたクラウド サービス。 (注* クラウドイメージ/パッケージ管理と npm パッケージ管理、特に npm に似ていますか?)
2013 年 3 月 20 日から、Docker の最初のバージョンが正式にリリースされ、2014 年 6 月に Docker 1.0 が正式にリリースされました。 15ヶ月。 Docker の開発の歴史は非常に短いですが、ますます人気が高まっています。
実際、コンテナ テクノロジは Docker の革新ではありません。HeroKu や NodeJitsu などのクラウド サービス プロバイダは同様の軽量仮想化テクノロジを採用していますが、Docker はこのコンテナ テクノロジを大規模にオープンソース化した最初の企業であり、広く受け入れられています。のコミュニティ。
良い部分
VM仮想マシンに対するDockerの利点は非常に明白で、軽量、高性能、利便性です。 以下の部分は、KVM and Docker LXC Benchmarking with OpenStack
高速です
。実行時のパフォーマンスは大幅に改善できます (古典的なケースでは 97% の改善です)
管理操作 (開始、停止、開始、再起動など) はすべて秒またはミリ秒で測定されます。
俊敏性
仮想マシンと同じくらい俊敏で、ベアメタルへの導入はボタンをクリックするだけで簡単です。
柔軟性
追加のオペレーティング システムを追加せずにアプリケーションとシステムを「コンテナ化」、
軽量
十分な「オペレーティング システム」があり、イメージを追加または削減するだけです。 100 ~ 1000 個のコンテナ コンテナをサーバー上にデプロイできます。
安い
オープンソースで無料、低コスト。最新の Linux カーネルによってサポートおよび駆動されます。注* Lightweight Container は、物理マシン上でより多くの「コンテナ」を開くことができ、VM よりも安価になる予定です。
エコシステム
はますます人気が高まっています。Google トレンド、docker、または LXC を見てください。
無数のコミュニティ アプリケーションやサードパーティ アプリケーションがあります。
クラウドサポート
無数のクラウドサービスが、Linuxコンテナを作成および管理するためのフレームワークを提供しています。
Docker のパフォーマンスの利点については、この IBM エンジニアのパフォーマンス向上の評価も参照してください。VM (OS システム レベルの仮想化) と比較して、あらゆる面で大幅に向上しています。
Performance Characteristics of VMs vs Docker Containers by Boden Russel (IBM)
従来の v ms vs Docker Containers のパフォーマンス特性
物議を醸す部分
Go や NodeJS のように、どんなプロジェクトにも議論はつきものですし、Docker にも議論はあります。それはいくつか。
完全に分離できるでしょうか?
超複雑なビジネスシステムでは、単一のOSで完全な分離を実現できますか? 1つのプログラムのクラッシュ/メモリオーバーフロー/高いCPU使用率は、他のコンテナやシステム全体に影響を及ぼしますか?実際のマルチホスト運用環境で Docker がミッションクリティカルなシステムをサポートできるかどうかについては、多くの人がまだ懐疑的です。 注* Node.JS のシングル スレッドは高速かつ不安定で、複雑なシナリオには適用できないのではないかと疑問に思う人もいるのと同じです。
しかし、良いニュースは、より優れた分離をサポートするために、Linux カーネルがコンテナに多くの改良を加えたことです。
GO言語はまだ完全に成熟していません
DockerはGo言語で開発されていますが、GO言語はほとんどの開発者にとって比較的なじみがなく、改良が続けられており、成熟にはまだ時間がかかります。この半分ギット、半分パッケージの管理アプローチは、一部の人に不快感を与えます。
民間企業によって管理されています
Docker は Dotcloud と呼ばれる民間企業によって設計されました。たとえば、Docker プロジェクトのコンパイルにソース コードを使用することはできません。ブラックボックスによってコンパイルされたパッケージは、将来完全に無料ではない可能性があります。 現在、Docker は企業向けにエンタープライズレベルのサービス (コンサルティング、サポート、トレーニング) を開始しています。