Если Docker запускается изначально на окна, то зачем ему гипер-v

Если сообщество Docker запускается изначально на окнах, то зачем ему Hyper-v? IE, не является ли native, подразумевает, что Docker-Engine может запускать инструкции по окнам? Мне кажется, что он все еще запускает виртуальную машину Linux и работает с ней.

Для меня кажется, что в docker-toolbox используется гиперкабель с оракулом, работающий под Linux, тогда как сообщество Docker использует Hyper-V, работающий под Linux. Есть ли еще одна важная разница, которую я не замечаю?

Это правильно? Понимаю ли я слово "родной" неправильно, докеры ошибочно используют это слово или есть какой-то другой аспект, который мне не хватает?

Причина, по которой я спрашиваю, заключается в том, что я заметил, что вы не используете Docker-machine с изданием сообщества, и мне интересно, почему это так. Доклер-машина - это вещь, которая работает на октанах, а Docker Engine - нет? Я думаю, что слово докер перегружено и может привести к путанице в этом случае :)

Заранее спасибо!

Ответ 1

Поддержка Docker для Windows имеет несколько вариантов:

  1. Docker Toolbox, который включает Docker Machine, которая раскручивает образ boot2docker внутри VirtualBox. Это контейнеры Linux, работающие с ядром Linux внутри виртуальной машины. Первоначально это был единственный вариант для пользователей Windows.

  2. Docker для Windows, использующий Hyper-V для запуска виртуальной машины Moby, основанной на LinuxKit, для запуска образов Linux. LinuxKit предоставляет ОС Linux на основе контейнеров, и есть некоторая интеграция, чтобы сделать ее менее похожей на виртуальную машину для конечного пользователя, например, вы можете использовать 127.0.0.1 вместо IP-адреса виртуальной машины VirutalBox. Если у вас есть Hyper-V и вы хотите запускать контейнеры Linux в Windows, это предпочтительный вариант.

  3. Контейнеры Windows Server, на которых исполняются двоичные файлы Windows в одной хост-системе, аналогично тому, как контейнеры Linux в ОС Linux не нуждаются в виртуальной машине.

  4. Контейнеры Hyper-V, которые запускают двоичные файлы Windows внутри отдельной виртуальной машины для дополнительной изоляции.

Вы можете прочитать больше о последних двух вариантах в документации Microsoft.

Важно отметить, что при установке Docker для Windows на поддерживаемом сервере, таком как 2016, у вас есть варианты 2, 3 и 4, между которыми вы можете переключаться. Для контейнеров Linux и Windows в настройках есть переключатель, который влияет на все запущенные контейнеры и команды. А между Windows Server Containers и Hyper-V контейнеров, там --isolation вариант на docker run командной строки. Поэтому я считаю, что вы должны иметь поддержку Hyper-V для покрытия 2 и 4, даже если вам нужен только вариант 3.

Ответ 2

Контейнеры Windows Server требуют изоляции Hyper-V в Windows 10, чтобы предоставить разработчикам ту же версию и конфигурацию ядра, которые будут использоваться в процессе производства, об этом можно найти на странице контейнера About Windows.

Ответ 3

Я понимаю, что Hyper-V представляет собой решение Windows для решения виртуальной машины.

Docker, работающий на окнах "изначально", подразумевает, что для запуска не требуется стороннее программное обеспечение, такое как виртуальный бокс, vmware fusion или parallels, вместо этого он использует программное обеспечение Hyper-V, которое поставляется с окнами 10.

Ответ 4

Поддержка Docker в Windows не является родной, Docker был написан для запуска на Linux изначально. Таким образом, требования к запуску Docker CE в Windows:

  1. Виртуализация должна быть активирована, поскольку docker-ce создает виртуальную машину на Hyper-V. Поскольку все гипервизоры требуют, чтобы аппаратная виртуализация была включена, Hyper-V в этом вопросе не является исключительным. При необходимости установщик Docker для Windows включит Hyper-V, если потребуется, и перезагрузите компьютер.

  2. Для более старых систем Windows, которые не поддерживают аппаратную виртуализацию, рекомендуется использовать Docker Toolbox, которая использует Oracle Virtualbox для развертывания виртуальных машин, в которых будут размещаться контейнеры докеров, а не Hyper-V.

Ответ 5

Windows поддерживает "Изоляцию процессов" в дополнение к "Изоляция Hyper-v".

Контейнеры изоляции процессов в Windows запускаются без дополнительного уровня виртуализации (аналогично тому, что вы могли использовать с докером в Linux); Я считаю, что это то, что ищет ОП, обращаясь к "родным" контейнерам.

Поддержка изоляции процессов все еще довольно нова, но последние версии Windows Server 2019 и Windows 10 действительно могут запускать контейнеры Windows без дополнительных затрат на виртуальный хост hyper-v. Стоит отметить, что версия ядра базового образа контейнера Windows должна соответствовать версии ядра на вашем хост-компьютере. Так что вы, вероятно, не сможете просто использовать те же контейнеры, которые работали на hyper-v.

Вот таблица совместимости версий контейнеров Windows, в которой hyperv какие хост-операционные системы поддерживают изоляцию process или hyperv.

Хотя эта страница ^ не указывает на это, Windows 180 Update 1809 является первым обновлением, поддерживающим изоляцию процесса Docker, как отмечено в примечаниях к выпуску Docker Engine.