Должен ли док-контейнер иметь дистрибутив ОС? - PullRequest
2 голосов
/ 05 мая 2019

Я новичок в докере и следую многим урокам. Я узнал, что мы можем включить любую вещь (БД, сервер и т. Д.) В контейнер докера. Тем не менее, я видел во многих руководствах, что файлы образов Docker имеют «FROM некоторый дистрибутив ОС» (я знаю, что этот дистрибутив не является полной ОС, но предоставляет утилиты, процессы дистрибутива). Мой вопрос таков:

всегда ли контейнер должен иметь дистрибутив ОС?

Если да, то почему? (Не могут ли остальные компоненты (например: java vm) работать на ядре?),

Если нет: каковы последствия? Или что может быть лучшей практикой в ​​целом?
(Я из Java)

1 Ответ

1 голос
/ 05 мая 2019

Каждый образ докера, который вы определяете, должен иметь предложение FROM, потому что он должен быть основан на другом образе. Вы можете создать свой собственный базовый образ, но, мне кажется, он вам не нужен. Изображение - это не что иное, как набор двоичных файлов, которые вы можете использовать в своем контейнере, созданном из вашего изображения. На докер-хабе доступно множество изображений, поэтому лучше всего сохранять изображения как можно меньше. Поэтому я бы порекомендовал базовые изображения на основе альпийских.

https://hub.docker.com/_/openjdk

Если вам действительно нужно собственное базовое изображение, посмотрите здесь

https://docs.docker.com/develop/develop-images/baseimages/

, а также в связанной статье комментария stackoverflow.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...