Dockerと仮想マシンのイメージに違いはありますか?画像形式を除いて、私はこれに関する情報をどこにも見つけることができませんでした。画像サイズ、インスタンス作成時間、キャプチャ時間などについてコメントしてください。ありがとうございます。
これらは、DockerとVMイメージ)のいくつかの違いです。
1。スナップショットプロセスはVMよりもDockerの方が高速です
通常、ベースイメージから始めて変更を加え、dockerを使用してそれらの変更をコミットすると、イメージが作成されます。この画像には、ベースとの違いのみが含まれています。イメージを実行する場合は、ベースも必要です。ベースは、レイヤードファイルシステムを使用してベースの上にイメージをレイヤー化します。ファイルシステムは異なるレイヤーをマージし、必要なものを取得し、それを実行するだけです。 Dockerは通常、レジストリからの既製のイメージの上に構築されるため、OS全体を自分で「スナップショット」する必要はほとんどありません。 OSを共通のイメージにスナップショットするDockerのこの機能により、他のDockerホストへのデプロイも簡単になります。
2。Dockerの起動時間はVMよりも短い
仮想マシンの起動には通常数分かかりますが、コンテナーには数秒かかり、場合によっては1秒未満になることもあります。
4。Dockerイメージの移植性が高い
Dockerイメージはレイヤーで構成されています。画像をプルまたは転送すると、まだキャッシュにないレイヤーのみが取得されます。つまり、同じベースオペレーティングシステムに基づいて複数のイメージを使用する場合、ベースレイヤーは1回だけ作成または取得されます。 VM画像にはこの柔軟性がありません。
5。Dockerはイメージのバージョン管理を提供します
Dockercommitコマンドを使用できます。 2つのフラグを指定できます:-m
と-a.
-m
フラグを使用すると、バージョン管理システムでコミットする場合と同じように、コミットメッセージを指定できます。
$ Sudo docker commit -m "Added json gem" -a "Kate Smith"
0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c
6。Dockerイメージには状態がありません
Dockerの用語では、読み取り専用レイヤーはイメージと呼ばれます。画像は決して変わりません。 DockerはUnionFile Systemを使用するため、プロセスはファイルシステム全体が読み取り/書き込みでマウントされていると見なします。ただし、すべての変更は最上位の書き込み可能レイヤーに移動し、その下では、読み取り専用イメージの元のファイルは変更されません。画像は変化しないため、画像に状態はありません。
7。VMはハードウェア中心であり、Dockerコンテナーはアプリケーション中心です
サイズが1GBのコンテナイメージがあるとします。フルVMを使用する場合は、1GB xx必要なVMの数が必要になります。 Dockerコンテナでは、1 GBの大部分を共有できます。また、1000個のコンテナがある場合でも、すべて同じOSイメージを実行していると仮定すると、コンテナOS用に1GBを少し超えるスペースしかない場合があります。
8。サポートされている画像形式
Dockerイメージ:
VMイメージ: