Основной вопрос для контейнеров Windows - базовый образ всегда требуется? - PullRequest
0 голосов
/ 17 июня 2019

Я совершенно новичок, когда дело доходит до контейнеров.

Меня особенно интересуют контейнеры Windows, работающие с изоляцией процессов (не изоляция Hyper-V)

Я много читал и смотрел видео, но есть один фундаментальный вопрос, который мне не объяснили в чтении, которое я сделал до сих пор.

Обязательно ли в каждом контейнере / образе Windows включать базовый образ / слой из nanoserver или servercore?

Что меня смущает, так это комментарии, сделанные в 5m35sec в следующем видео;

Контейнер Windows 101 Видео на канале 9

Он делает заявление (а я перефразирую)

"что единственное, что необходимо для создания образа докера, это статически связанный двоичный файл. "

Для меня это означает, что если моя операционная система HOST, на которой запущены контейнеры, имеет все необходимые зависимости, то можно виртуализировать ядро ​​из базовой операционной системы, отменяя требование к образу / слою базовой операционной системы в докере изображение.

Чего мне не хватает? Зачем мне нужен базовый слой изображения nanoserver или servercore?

Если моей операционной системой является v1903, а образу докера требуется ядро ​​v1903, почему он не может виртуализировать ядро ​​из операционной системы HOST?

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

1 Ответ

1 голос
/ 17 июня 2019

Основная идея docker заключается в повторном использовании ядра хост-системы, см. this для контейнера windows:

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

Но, как вы знаете, для запуска операционной системы недостаточно просто ядра, вам нужна файловая система.

Итак, это корень базового образа, см. this .

Файловая система построена из серии слоев, что дает вам возможность разделить несколько слоев на одно изображение, а другие слои - на другое изображение.С базовым изображением, то есть nanoserver or servercore, различные приложения могут повторно использовать одно и то же базовое изображение и использовать только двоичный файл приложения для построения на базовых изображениях.

Как показано на следующей диаграмме: другой контейнер с собственным двоичным файломможет делиться базовыми изображениями (например, ubuntu15.04 здесь), и образ каждого контейнера плюс общее общее изображение может быть полной файловой системой для запуска контейнера.

enter image description here

...