Какая разница между Docker для Windows и Docker в Windows?

Docker в Windows, похоже, встроен в Windows Server 2016? и поддерживает запуск Windows внутри контейнера Docker и использование Windows в качестве хоста контейнера Docker. Это поддерживает Linux? Я так не думаю, я думаю, что он поддерживает только контейнеры Windows Docker. Похоже, что это также поддерживается Microsoft.

Docker для Windows представляется отдельной установкой, созданной командой Docker для переноса Linux Docker в Windows. Таким образом, Windows может быть хостом Docker, но все контейнеры все еще являются обычными контейнерами Linux. Поддерживает ли это контейнеры Windows? Я так не думаю, я думаю, что он поддерживает только контейнеры Linux Docker. Это также поддерживается Docker.

Еще одно интересное замечание: Docker Tools для Visual Studio, по-видимому, поддерживает только Docker Desktop для Windows, но не Docker в Windows.

То, что я действительно ищу, - заявленные различия между двумя, своего рода хорошее сравнение. Какие функции каждый пытается достичь, где они похожи, где они разные. Будут ли они всегда разными или когда-нибудь соберутся вместе?

Ответ 1

Docker в Windows - разговорный способ обозначения только Docker Engine, работающего в Windows. Я считаю полезным думать об этом как хост контейнера Windows, так что да, только контейнеры Windows. Это будет то, что вы будете запускать на компьютере с Windows Server 2016. Так что, может быть, лучше назвать Docker для Windows Server, который, я думаю, люди тоже использовали. Я все еще предпочитаю Windows Container Host. Это означает, что у него есть только Docker Engine в конце дня, даже не нужно иметь ни одного из Docker-клиентов (docker CLI, docker-compose и т.д.).

Docker Desktop для Windows - это продукт, предназначенный для запуска контейнеров Linux и Windows в Windows. Он не предназначен для продакшен среды, а вместо этого предназначен для SKU десктопа/клиента Windows, отсюда и требование Windows 10. Таким образом, вы можете думать об этом как о Docker для Windows 10. Поскольку DfW может работать с обоими типами контейнеров, существуют разные конфигурации, которые он настраивает на вашем компьютере:

  • При использовании контейнеров Linux DfW создает MobyLinuxVM с Hyper-V, внутри которого он прозрачно выполняет контейнеры Linux, как если бы они работали на хосте Windows 10.
  • При использовании Windows Containers DfW устанавливает те же компоненты, что и Docker в Windows, чтобы у вас был Windows Container Host. Теперь у вас есть настройка Windows Docker Engine. Это позволяет вам запускать контейнеры Windows на клиентском SKU Win 10.

Теоретически вы могли бы установить DfW на Windows Server, я не пробовал, поэтому я не знаю, может ли это произойти, но зачем вам запускать контейнеры Linux на хосте Windows в производстве? в производственной среде у вас были бы Хосты-контейнеры Linux, которые запускают контейнеры Linux, и Хосты-контейнеры Windows, которые запускают контейнеры Windows, это позволило бы избежать накладных расходов и упростить процесс.

Ответ 2

Просто добавьте к ответу Уэса в Docker для Windows и несколько подробностей об экспериментальном LCOW, который вы ищете для параллельного выполнения контейнеров Windows и Linux на хост-компьютере Windows.

В настоящее время существует два способа запуска контейнеров Linux с помощью Docker для Windows и Hyper-V:

  1. Запускать контейнеры Linux на полноценной виртуальной машине Linux - вот что Docker
    как правило, делает сегодня.
  2. Запускать контейнеры Linux в Windows (LCOW) с изоляцией Hyper-V - это новая опция в Docker для Windows.

При первом подходе окна Docker для Windows будут иметь службу демона docker на хост-компьютере Windows, а также будут доступны на виртуальной машине Linux MOBY. В общем, у вас будет 2 разных хоста докеров. Тот, который работает на вашем хост-компьютере Windows, управляет только контейнерами Windows, а другой - на вашей виртуальной машине Linux Moby и управляет только контейнерами Linux.

Важно отметить, что все контейнеры Linux будут использовать одно ядро Linux на виртуальной машине Moby, а все контейнеры Windows - одно ядро Windows на хост-компьютере Windows.

enter image description here

Со вторым подходом все становится действительно интересным,

Контейнеры Linux с изоляцией Hyper-V запускают каждый контейнер Linux на оптимизированной виртуальной машине Linux с достаточным количеством ОС для запуска контейнеров. Каждый контейнер Linux имеет свое собственное ядро и собственную изолированную программную среду для виртуальных машин. Они также управляются Docker напрямую в Windows.

enter image description here

Основное отличие этого подхода заключается в том, что на хост-компьютере Windows выполняется только одна служба-демон docker, которая управляет контейнерами для Windows и Linux.

Все контейнеры Windows будут совместно использовать одно ядро Windows, в то время как каждый контейнер Linux будет иметь свое собственное ядро Linux

Чтобы понять больше в деталях, пожалуйста, обратитесьhttps://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers