Должны ли docker base images (ОС) быть одинаковыми?
Скажем, я работаю на винде, поверх которой виртуалка с alpine linux (такой дистр ставит официальный инсталлер docker for windows). Я хочу поставить nginx из оф. образа, который тоже базируется на alpine (FROM alpine:3.5), тут все ОК. Но потом мне захочется использовать другой image, который уже базируется на debian. Вот тут не совсем понятно...Ядро будет использоваться от того alpine linux, который у меня на виртуалке поверх винды, а как же разность дистрибутивов?
Получается, в тот контейнер попадет все, чего не хвататет, все потроха от debian, так получается? Это нормальный путь? Или же нужно строить свой image тоже уже на alpine, если разработчик образа не предоставил такого варианта? Есть ли разница по размеру и ресурсам и нужно ли заморачиваться или использовать все подряд image основанные на любых дистрибутивах, хоть на убунте?
И еще, имеет ли значение, какой linux на docker хосте? Скажем, у меня есть сервак с centos7, и я хочу на нем запускать все контейнеры, как от этого ситуация меняется?
Если сделать "свой image тоже уже на alpine", он будет использовать образ alpine который уже есть в системе.
Если дебиан то скачает себе дебиан и будет использовать его. Соответственно он займет место на диске, 200мб где-то.
Конечно, лучше наследовать свои образы от одного, доработанного. Просто меньше места и привычнее иметь дело с контейнером. Но часто проще взять готовый из library.
Линукс на хосте значения не имеет, докер для того и ставится чтоб не зависеть от хост системы.
Я параллельно задал вопрос на лоре, так там люди совсем другого мнения)) "он будет использовать образ alpine который уже есть в системе" - НЕ БУДЕТ, как сказал один из товарищей: "В имидж в любом случае попадают все потроха. С хоста ничего не подтягивается. Контейнер с убунту-имиджем, запущенный в генте ничем не отличается от контейнера с убунту-имиджем, запущенным в убунте.". И еще ... "Линукс на хотсе значения не имеет" - ИМЕЕТ. В идеале дистрибутив должен быть точно одинаковой версии и в staging и на девелоперских машинах, где собирают образы и в продакшене. Почитайте.
gto6120: так правильно и сказали.
"образ alpine который уже есть в системе" это не твоя хост альпина, это образ альпины который докер себе скачал, потому что он указан как исходный.
И там народ сурьезный продакшн обсуждает, надо всячески минимизировать возможные проблемы и поэтому одна система и на хосте и в контейнерах, зоопарки стараются не разводить.
А у тебя виртуалка на винде, используй что хочешь, грозит только заполнением диска. Что тоже может иметь значение, у меня /var/lib/docker одно время до 30 Гб разросся.
В целом согласен, но все мы мечтаем о серьезном продакшене, иначе бы докером не пользовались. А значит, стоит давать рекомендации, которые позволят избежать проблем или хотя бы предупреждать о их возможности. // Насчет alpine в локал реджистри понял. Хотя странно, в списке имеджей, я не заметил ни alpine, ни debian, хотя ставил образы на них основанные. О чем это говорит?
Кстати, я стянул к себе образов на 2ГБ, ссдшка у меня маленькая, всего 60ГБ, потом поудалял образы и контейнеры, а пространство не вернулось, где могли осесть файлы на винде? Порылся SpaceSniffer, крупных файлов он не видит, вроде как исчезли, может где-то куча мелочи осталась? В папке докера ничего нет, в AppData\Roaming и т.п. тоже чисто, только логи докера лежат.
gto6120: не имел дело с докером под виндой.
А оно прям в виде отдельных файлов в файловой системе винды лежит?
Просто докер под вин работает в виртуалбоксе, а виртуалбокс может использовать динамический образ вм, динамический образ вм может изменять свой размер только в сторону увеличения.
А еще докерный образ это не крупный файл, это папка с кучей файлов.
docker images -a делал, пусто... По-моему virtualbox был на всех win до 10, сейчас вроде как Hyper-V используется, несовместимое с VT-x, на котором virtualbox. При установке докер так и сказал: "виртуалбокс больше у тебя работать не будет".
И винда еще псодить начала, я малость офигел...Потом понял, что у меня в автозагрузке стоит батник, который в бэкграунде запускает вируалку в виртуалбоксе. (Хотя это еще не окончательный вывод, может псоды еще появятся). У винды десятой они еще страшнее: синий экран и грустный смайлик.