В чем разница между изображением виртуальной машины и изображением Docker?

Существуют ли различия в изображениях Docker и Virtual Machine? Кроме форматов изображений, я нигде не мог найти информацию об этом. Пожалуйста, прокомментируйте такие вещи, как размер изображения, время создания экземпляра, время захвата и т.д. Спасибо!

Ответ 1

Это некоторые различия между докером и изображением VM, которое я мог бы перечислять:

1.

Обычно мы начинаем с базового изображения, а затем делаем наши изменения и фиксируем эти изменения с помощью docker и создаем изображение. Это изображение содержит только отличия от базы. Когда мы хотим запустить наш образ, нам также нужна база, и он накладывает наш образ поверх базы, используя многоуровневую файловую систему. Файловая система объединяет разные слои вместе, и мы получаем то, что хотим, и нам просто нужно ее запустить. Поскольку докеры обычно строятся поверх готовых изображений из реестра, нам редко приходится "делать снимок" всей ОС. Эта способность Dockers для моментального снимка ОС в общий образ также упрощает развертывание на других узлах докеров.

2. Время запуска меньше для Docker, чем VM

Виртуальная машина обычно занимает несколько минут, но контейнеры занимают секунды, а иногда даже меньше секунды.

4. Изображение Docker имеет большую мобильность

Изображения докеров состоят из слоев. Когда мы вытягиваем или передаем изображение, извлекаются только те слои, которые мы пока еще в кеше. Это означает, что если мы используем несколько изображений на основе одной и той же базовой операционной системы, базовый уровень создается или извлекается только один раз. Изображения VM не обладают такой гибкостью.

5. Docker обеспечивает управление версиями изображений

Мы можем использовать команду фиксации докеров. Мы можем указать два флага: -m и -a. Флаг -m позволяет нам указывать сообщение фиксации, как и с фиксацией в системе управления версиями:

$ sudo docker commit -m "Added json gem" -a "Kate Smith"
0b2616b0e5a8 ouruser/sinatra:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c

6. Изображения докеров не имеют состояний

В терминологии Докера термин "только для чтения" называется изображением. Изображение никогда не меняется. Поскольку Docker использует файловую систему Union, процессы считают, что вся файловая система смонтирована read-write. Но все изменения идут на самый верхний слой, который можно записать, и под ним исходный файл в режиме только для чтения остается неизменным. Поскольку изображения не меняются, изображения не имеют состояния.

7. Виртуальные машины являются аппаратно-ориентированными, а докеры-контейнеры ориентированы на приложения

Скажем, у нас есть изображение контейнера размером 1 ГБ. Если бы мы хотели использовать полную виртуальную машину, нам нужно было бы иметь 1 Гбайт x количество виртуальных машин, которые вы хотите. В контейнере докера мы можем разделить основную часть 1 ГБ, и если у вас 1000 контейнеров, у нас по-прежнему может быть только 1 ГБ пространства для ОС контейнеров, если они все работают с одним и тем же изображением ОС.

8. Поддерживаемые форматы изображений

Изображения докеров:

  • голый. Изображение не имеет конверта контейнера или метаданных.
  • OVF. Формат контейнера OVF.
  • Аки. Изображение ядра Amazon.
  • ари. Изображение ramdisk Amazon.
  • Ами. Изображение машины Amazon.

Изображения VM:

  • сырой. Неструктурированный формат образа диска; если у вас есть файл без расширение возможно необработанный формат
  • VHD. Формат диска VHD, общий формат диска, используемый мониторами виртуальных машин от VMware, Xen, Microsoft, VirtualBox и другие.
  • VMDK. Поддерживается общий формат диска многими обычными мониторами виртуальных машин
  • VDI. Поддерживается VirtualBox монитор виртуальной машины и эмулятор QEMU
  • изо. Формат архива для содержимого данных оптического диска, такого как CD-ROM.
  • qcow2. Поддерживается эмулятором QEMU, который может расширяться динамически и поддерживает Copy on Write
  • Аки. Изображение ядра Amazon.
  • ари. Амазонка Изображение ramdisk.
  • Ами. Изображение машины Amazon.