アプリケーションコンテナは、高速でリソースの使用率を保証しますが、仮想マシンが提供するセキュリティを欠いています。 したがって、今日は、VM内でのDockerの使用、特にOpenSourceプロジェクトQEMU / KVMについて説明します。
さまざまなコンテナの詳細を詳しく調べない場合、Dockerを特定のアプリケーションで数百万のコンテナを即座に起動できる高速で動的なソリューションとして簡単に特徴付けることができます。 Dockerは、関連するコンポーネントを備えた既製のソフトウェアビルドを実行するために必要なすべてを提供しますが、そのような負荷の安全性についてはまだ多くの人が心配しています。 問題は、Dockerがまだ非常に若いソリューションであり、すべての「子供の問題」が解決されていないことです。 また、1台のマシンで複数のDocker環境を起動すると、攻撃者は純粋に技術的に別のユーザーをハッキングすることで1人のユーザーのリソースにアクセスできます。 同意する、これは良くない。
QEMU内のDocker
Docker内では、現在NameSpacesを使用して分離が実装されていますが、このアプローチの信頼性は依然として疑わしいものです。 したがって、仮想マシン内でコンテナーを起動することは非常に一般的な方法です。 原則として、QEMUは最も人気のあるオープンソース仮想化プロジェクトの1つであるため、選択されています。 QEMU仮想マシン内では、シングルユーザーコンテナーが既に実行されています。 したがって、ユーザーは相互に確実に保護され、同じ所有者のアプリケーションは非常に迅速に動作し、コンテナ環境で起動されるため、セキュリティと速度の間に妥協点があります。
追いかけ速度
ただし、時間が経つにつれて、コンテナが大きくなるにつれて、このトレードオフが問題になり始めます。 したがって、開発者は積極的に対処し始めています。 そのため、コミュニティには、Dockerを使用するより安全な環境のパフォーマンスを改善するという緊急の問題を解決するのに役立つさまざまな技術が登場します。
たとえば、ClearLinuxはIntel独自のディストリビューションであり、Intelアーキテクチャエコシステム内で動作するだけでなく、拡張されたDockerサポート用にも設計されています。 ClearLinuxには、「レイヤー」を構成する機能があります。これは、ファイルシステムの個々のコンポーネントであり、そこからDockerコンテナーのルートディレクトリが形成されます。 これにより、ハイパーバイザーでの作業の効率を大幅に向上できます。 このソリューションは非常に有望ですが、もちろん、インテルの機器でのみその主な利点を示しています。
別のオプションは、Unikernelを使用することです。 特別に準備されたOSイメージは、ゲストVM(Dockerが既に実行されている)でのOSカーネルの存在のパフォーマンスへの影響を減らすことができます。 調整されたアドレス空間を備えたさまざまなオペレーティングシステムの特別に軽量化されたカーネルは、特定のアプリケーションで動作するように最適化され、実証済みでサポートされ、すぐに使用できるソリューションです。 Dockerで使用するアプリケーション用にUnikernelがすでに作成されている場合は、VM分離を非常に効率的に使用できます。
Virtuozzoでは、Dockerの進化を引き続き監視し、この問題に対するソリューションを提供しています。 したがって、Virtuozzoに基づくKVMハイパーバイザーは、軽量のVMの使用を許可するだけでなく、Dockerコンテナを起動するための多数の最適化もサポートします。 これに加えて、OpenVZおよび商用Virtuozzo上の軽量VMは、KVMの機能にバックアップおよび追加のセキュリティ監視機能を追加し、VMによって起動されるDockerエコシステムの保護に貢献します。
Dockerサポートが必要になる
今日、中間レベルとしてVMまたはライトVMを使用することでDockerセキュリティを最適化することができるという事実について話しますが、近い将来、コミュニティはVMのパフォーマンスを独立した分離レイヤーとして向上させるだけでなく、Dockerコンテナーを直接起動する機能も向上させますハイパーバイザーに基づいています。
Virtuozzoエコシステムでは、一般的にDockerは、軽量仮想マシンおよび従来の仮想マシン(異なるオペレーティングシステムに基づく)とともに、共通の仮想環境でロードを起動するための可能なオプションの1つと考えています。 現在、ハブ、構成、kubernetes、flocker、libnetwork、さまざまなセキュリティ検証ツールなどのo-Dockerサービスのサポートを拡大するための作業が活発に進行しています。
したがって、Dockerチームの独自の努力、Dockerを起動するための中間VMの有効性を最適化するためのさまざまなプロジェクトの可用性、およびハイパーバイザーレベルでのDockerの将来的なサポートにより、Dockerアプリケーションコンテナーは、メインドッカーの利点。