chrootとDockerの違い


14

dockerとchrootの違いがわかりません。はい、レジストリのパッケージ化の点でいいです。しかし、どういうわけか私は余分なベルとホイッスルを備えたちょうどそのchrootの感じを得る。

何かが足りないのはわかっています。それらがどのように異なっているか、そしてchrootが同様のことをすることができるならdockerの必要性を知ることは素晴らしいことでしょう。

私はこのChroot対Dockerも十分に明確に見つけることができませんでした。


ええ、そうです、Dockerはカーネルがまだあなたにしてくれないことは何もしません。それは、多かれ少なかれまとまりがあり、かなり使いやすいツールにパッケージ化するだけです。chroot、名前空間、クォータ、NAT、その他すべてを自分で行う必要がある場合は、独自のDockerを作成できます。
Gaius

回答:


8

まあ、余分な口笛はプロセス分離と呼ばれ、コンテナーはホストカーネルから独自の名前空間を取得します。つまり、コンテナー内のプログラムはカーネルメモリを読み取ったり、許可されている以上のRAMを消費したりすることはできません。

また、ネットワークスタックを分離するため、2つのプロセスがたとえばポート8080でリッスンできるため、ホストレベルでルーティングを処理する必要があります。ここでは魔法はありませんが、ルーティングを1か所で処理できるため、プロセス構成の変更を回避できます。空きポートを聞いてください。

次に、chrootは引き続き読み取り/書き込みが可能で、変更は永続的です。使用aufsするDockerコンテナーは、コンテナーを起動するたびにクリーンなファイルシステムから開始します(IIRCを停止/開始すると変更は保持されます)。

したがって、コンテナはprocess namespace+ と考えることができますがchroot、現実はもう少し複雑です。


aufsはデフォルトでは使用されなくなったことに注意してください。今それはoverlay2
Vitalii Vitrenko

確かに、オーバーレイ2よりもaufsを参照する教育資料がまだあると思います:)
Tensibai

通常のプロセスは、想定されていないメモリを読み取ることができません。セキュリティのためにDockerに依存している場合、それは間違っています...
Gaius

@Gaiusあなたは私を間違って読んでいます、私はただOPに検索の手がかりを与えようとしています...内部で使用するものに開発者に与えるすべての自由を備えた配信パイプラインにDockerを追加することは絶対にセキュリティポイントではありません。それでも、名前空間は本来、一連のスタックオーバーフローとバッファオーバーフローから保護します。
Tensibai

5

はい、chroot彼らには共通点がほとんどない、またはまったくないという以上に、絶対にそれ以上のものがあります。

  • 手のタスクに関連するセマンティクスを含む標準化されたスクリプトファイル形式
  • 画像(匿名の中間画像を含む)、キャッシュ、命名、ダウンロードなど、強力な管理(docker image prune...)
  • コンテナ(独自の一時ファイルシステム、名前付け、コンテナへのアクセスなどを含むdocker exec
  • プロセス管理(docker container ...
  • intra-docker-container-networkingなどを含む、単純なオプションによるネットワーキング
  • ボリューム(特別な管理ボリュームを含む)
  • docker-compose または、目立たないアップグレードではるかに多くなります。
  • ドッキングされたコンテナー(OpenShiftなど)に基づく他のソリューションの大規模な動物園。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.