Какая разница между 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:
- Запускать контейнеры Linux на полноценной виртуальной машине Linux - вот что Docker
как правило, делает сегодня.
- Запускать контейнеры 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