2017-05-12 4 views
0

左は、私はこのvideoからもらったドッカーTIS VMと豊富です:Dockerエンジンは、ハイパーバイザとゲストOSをどのように置き換えますか?

enter image description here

どのようにドッカーエンジンはゲストOSのハイパーバイザを交換し、まだで動作することができるように軽量であることができホストOS?基本的には、VMとは異なるアプリケーションやその依存関係をより効率的に変換するだけです。 Docker EngineはホストOSと同じカーネルを使用していると聞きましたが、その意味を理解していません。基本的には、複数のゲストOSとハイパーバイザーのすべての依存関係を1つのDockerエンジンで置き換えましたが、その方法を理解できません。 Dockerエンジンは、ゲストOSが最初に持っていたはずのはるかに無駄なものを取り除くだけですか?必要ではなかった無関係のものは何ですか?

答えて

3

コンテナは、ネームスペースやcgroupなどのLinux OSプリミティブで独立したプロセスとして理解する必要があります。現在、5つの名前空間があります:PID、マウント、ネットワーク、IPC、ユーザーネームスペース。簡単に言えば:名前空間では、同じ名前空間にない限り、プロセスは互いを見ることができません。ステロイドのchroot(マウントネームスペースのようなもの)と考えてください... FreeBSDのjailsとSolarisゾーンに似ています。 Cgroupは、ネームスペース内のプロセスグループによってリソース消費に制限を設定する方法です。

ドッカーはちょうど

コンテナはホストと同じカーネルを実行するなど、コンテナは組合のファイルシステム上の層の上に実行して、独自の方法でのLinuxコンテナをimplementes。カーネルの攻撃面を減らすために、seccompやapparmor/selinuxなどのメカニズムを使用して、多くのシステムコールをフィルタリングします。さらに、刑務所から脱出することを困難にする分離レベルを達成するために、多くの機能が削除されています。

+0

は、サーバー側またはクライアントまたはその両方で使用されるドッカーエンジンですか?もしそうなら、それはどのように両側で異なって使用されますか? – mangocaptain

+1

Docker Engineはサーバー上にコンテナを作成します。クライアントはそれとやりとりするだけです。同じホスト上で使用される場合、ドッカークライアントはUnixドメインソケットを介してサーバーとやり取りします。別のマシンでは、セキュリティのためにTLSと認証を使用できます。 –

+0

コードを作成するマシンAとコードをホストするマシンB(サーバー)がある場合、どちらもドッカーエンジンをインストールする必要がありますか?マシンAがDockerを使用してイメージを構築し、Dockerハブにプッシュした後、マシンBがイメージをプルしてコンテナとして実行すると言うのは正しいでしょうか? – mangocaptain

1

Dicerエンジンは実際にはマシン上で実行されている別のプロセスで、他のプロセスを分離するために必要なさまざまな名前空間でカーネルを構成するだけです。

私は実際にこのことについて話しているfound hereに関するブログ記事を書いています。その中で、私は、より良いイメージがこれまでに大きなフィードバックを受けている下のものであるという主張をします。うまくいけば、リカルドが何を話しているかを視覚化することができればうれしいです。

Other container setup

関連する問題