Вопрос:

Докер, запускающий приложения Windows

.net windows docker virtualization

364 просмотра

2 ответа

151 Репутация автора

Я понимаю, что Docker - это инструмент контейнеризации, с ограниченным набором API, который не зависит от платформы. Я пытаюсь понять, какие ограничения он накладывает на типичную разработку Windows. Например, ограничивает ли он доступ только для записи в файловую систему (и, следовательно, исключает приложения, которые пишут в реестр)? Есть ли уровень сложности, когда Dock не подходит (но опять же я слышал, что MSSQL будет поддерживаться в Docker)?

Автор: SJDoodle Источник Размещён: 26.10.2016 01:47

Ответы (2)


1 плюс

14097 Репутация автора

Решение

Этот вопрос действительно широкий, и на него трудно ответить однозначно, но можно решить несколько конкретных моментов.

Я понимаю, что Docker - это инструмент контейнеризации, с ограниченным набором API, который не зависит от платформы.

Он не зависит от платформы в том смысле, что вы можете запускать контейнер в CentOS, Ubuntu или любом другом дистрибутиве Linux, но вы не можете запустить контейнер Linux в Windows изначально или контейнер Windows в Linux. Представляем Docker для Windows Server 2016 - хорошее место, чтобы начать с информации о контейнерах Windows.


Например, ограничивает ли он доступ только для записи в файловую систему (и, следовательно, исключает приложения, которые пишут в реестр)?

На основании этого MSDN FAQ , нет (выделено мое)

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

Например, файл dockerfile для SQL Server Express изменяет реестр.


Есть ли уровень сложности, когда док не подходит

Вопрос не в сложности, а в доступности API. Это также из вышеупомянутого Docker для Windows Server 2016

За исключением приложений с графическим интерфейсом и приложений, для которых требуется удаленный рабочий стол Windows, большинство приложений, работающих на Windows Server, можно докеризовать для запуска в образе на основе microsoft / windowsservercore с минимальными усилиями.

Автор: R0MANARMY Размещён: 26.10.2016 02:55

0 плюса

868506 Репутация автора

Примечание: с тех пор у вас есть « Как запустить облегченные контейнеры Windows в Windows 10 » (январь 2019 года, 2+ года спустя) от Stefan Scherer .

Следует отметить, что с последней версией Docker Desktop (2.0.0.2+) в Windows 10 1809 вы теперь можете запускать контейнеры Windows в режиме изоляции процессов

В прошлом процесс изоляции был возможен только с Windows Server.
Операционная система Windows 10 использует то же ядро, но с другими настройками.
С этим запросом moby/mobyPR 38000, который был объединен с Docker 18.09.1, теперь можно использовать его и в Windows 10.

  • Вы можете запустить больше контейнеров Windows на вашем компьютере, так как они потребляют меньше ресурсов
  • Контейнеры обычно запускаются быстрее, чем в режиме изоляции
  • Вы можете «увидеть» изолированные процессы и то, что они делают

Специально для разработчиков это большое улучшение, потому что теперь вы можете использовать такие инструменты, как Task Manager, Process Monitor и другие, чтобы проверять процессы контейнеров с хоста.

Единственное предостережение при использовании режима изоляции процесса заключается в том, что базовый образ Windows, который используется для образа Docker, должен соответствовать ядру вашего компьютера с Windows 10.

Откройте терминал PowerShell и запустите контейнер Windows с помощью этой команды

docker run -d -p 8080:8080 --isolation=process chocolateyfest/appetizer:1.0.0

https://stefanscherer.github.io/content/images/2019/01/windows-10-process-isolation.png

Как вы можете видеть на скриншоте, вы можете увидеть процесс node.exe в диспетчере задач.
Если у вас установлен Sysinternals Process Monitor, вы также можете увидеть, что делает контейнерный процесс.

Это замечательно, когда вы создаете собственный образ Docker из своего или стороннего приложения, и что-то работает не так, как ожидалось, или exe-файл просто не хочет запускаться внутри контейнера.

Автор: VonC Размещён: 12.06.2019 09:25
Вопросы из категории :
32x32