仮想マシン内でコンテナを実行していますか?


15

コンテナは、ハードウェアを仮想化せずに、VM上で実行されているソフトウェアをシステム上の他のコンテナで実行されているソフトウェアから隔離するだけなので、VMはVMよりもはるかに軽量であることを理解しています。

私の状況では、追加のサーバーを購入する余裕はなく、所有しているサーバーはすべてハイパーバイザーを実行しています。比較的小さなWebアプリケーションのインスタンスをホストするために、少なくとも6つの「サーバー」をプロビジョニングする必要があります(各インスタンスは異なる顧客用です)。これらの各サーバーに新しいVMをプロビジョニングするのは無駄なので、2つのVMをセットアップし、次のいずれかを実行する予定です。

  1. 仮想ホスト(apache)を使用して、各VMでアプリケーションの複数のインスタンスを実行します。または
  2. 環境を分離できるように、VMにコンテナーをセットアップします。

これを考慮して、VM内で使用するのは悪い考えになるコンテナシステムに関連する無視できないオーバーヘッドがありますか、またはコンテナを使用したくない他の技術的な理由がありますか?

回答:


13

DockerはVMと比較して非常に軽量であり、VMシステムは正常に実行されるコンテナーで機能するはずです。各コンテナは本質的に隔離されたシステムとして実行されるため、システムの安定性の観点から隔離するのに非常に適しています。あなたの説明に基づいて、それはDockerの理想的なユースケースのように聞こえます。Dockerを試してみて、可能な限り最新バージョンを使用していることを確認してください。古いバージョンの中には、かなり厄介な脆弱性がいくつかあります。Dockerを実行する際には、いくつかのセキュリティ上の考慮事項があります。

SELinux -SELinuxはコンテナ対応であり、コンテナごとにランダムに名前が付けられたMCSラベルを自動的に作成します。これにより、LXCコンテナはそれ自体では本当に「含まれている」とは見なされないため、分離が保証されますが、改善されています。

USERディレクティブ -各Dockerfileで、USERディレクティブを使用し、デフォルトのroot以外のアカウントとしてユーザーを実行することをお勧めします。ここでの問題は、ユーザーがシステムに存在する必要があることです。また、この新しいユーザーにとっては、ファイルやディレクトリのchowning / chmoddingがイライラする可能性がありますが、リスクを軽減するのに役立ちます。通常、システムに「containeruser」などを作成して、システムの他の部分と重複しないすべてのシステムで共通のユーザーが利用できるようにすることをお勧めします。

それ以外の場合、最も難しいのはコンテナを管理し、必要に応じてコンテナを更新することです。


3

コンテナシステムに関連する無視できないオーバーヘッドがあり、VM内で使用するのは良くない考えです

ドッカーコンテナのパフォーマンスは、VMwareのvSphereであなたを助けますか?

または、コンテナを使用したくない他の技術的な理由はありますか?

まだDockerを使用していないので、Dockerについて一般的には知りません。管理ソフトウェアはVM管理ソフトウェアと比較してまだ成熟度に欠けていると思います...しかし、私はvSphere管理者であるため、おそらく偏っています。

VM上のDockerを考慮すると、CoreOSはvSphere 5.5で公式にサポートされるようになりました。したがって、少なくともVMwareは、VM上のDocker /コンテナは問題ないと考えています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.