web-dev-qa-db-ja.com

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

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

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

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

これを考慮して、VM内でそれらを使用することを悪いアイデアにするコンテナーシステムに関連する無視できないオーバーヘッドがありますか、それとも他に何かありますかtechnicalコンテナーを使用したくない理由?

15
Chris L

Dockerは、VMおよびa VMシステムは正常に動作するコンテナーだけで機能する必要があります。各コンテナーは本質的に独立したシステムとして実行されるため、非常に優れています。システムの安定性の観点から分離します。説明に基づいて、Dockerの理想的な使用例のように聞こえます。Dockerを実験する場合は、可能な限り最新のバージョンを使用していることを確認してください。古いバージョンには、かなり厄介な脆弱性があります。 。Dockerを実行する場合、セキュリティに関する考慮事項がいくつかあります。

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

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

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

13

コンテナシステムに関連する無視できないオーバーヘッドがあり、VM内でそれらを使用することは悪い考えになりますか

VMware vSphereのDocker Containers Performance は役に立ちますか?

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

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

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

3
Mario Lenz