Если вы не уверены, какой базовый образ вы используетеследует выбрать, просто прочитайте документацию на DockerHub .В нем перечислены все поддерживаемые в настоящее время теги и описаны различные варианты изображения Node (раздел «Варианты изображения»).
Варианты изображения
node
изображения бывают разных вкусов, каждый из которых предназначен для конкретного случая использования.
node:<version>
Это изображение де-факто.Если вы не уверены в своих потребностях, возможно, вы захотите воспользоваться этим.Он предназначен для использования как в качестве одноразового контейнера (смонтируйте исходный код и запустите контейнер для запуска приложения), так и в качестве основы для создания других образов.Этот тег основан на buildpack-deps
.buildpack-deps
предназначен для обычного пользователя докера, у которого в системе много образов.По своей конструкции он содержит большое количество чрезвычайно распространенных пакетов Debian.Это уменьшает количество пакетов, которые образы, полученные из него, необходимо установить, тем самым уменьшая общий размер всех образов в вашей системе.
node:<version>-alpine
Это изображение основано на популярных Проект Alpine Linux , доступен в официальном образе alpine
.Alpine Linux намного меньше, чем большинство базовых образов дистрибутива (~ 5 МБ), и, таким образом, в целом приводит к гораздо более тонким изображениям.
Этот вариант настоятельно рекомендуется, когда желаемый конечный размер изображения настолько мал, насколько это возможно.Главное предостережение, которое следует отметить, это то, что он использует musl libc вместо glibc и friends , поэтому некоторые программы могут столкнуться с проблемами в зависимости от глубины их требований к libc.Тем не менее, большинство программ не имеют проблемы с этим, поэтому этот вариант, как правило, является очень безопасным выбором.См. эту ветку комментариев Hacker News для более подробного обсуждения проблем, которые могут возникнуть, и некоторых сравнительных проверок использования изображений на основе Alpine.
Чтобы минимизировать размер изображения, редко встречаются дополнительные связанныеинструменты (такие как git
или bash
) для включения в изображения на основе Alpine.Используя этот образ в качестве основы, добавьте необходимые вещи в свой собственный файл Dockerfile (см. Описание образа alpine
, где приведены примеры установки пакетов, если вы незнакомы).
node:<version>-onbuild
Варианты изображения ONBUILD
устарели, и их использование не рекомендуется.Для получения дополнительной информации см. docker-library / official-images # 2076 .
В то время как вариант onbuild
действительно полезен для "запуска с работы" (от нуля до Dockerized вкороткий период времени), это не рекомендуется для долгосрочного использования в проекте из-за отсутствия контроля над , когда ONBUILD
вызывает пожар (см. также docker/docker#5714
,docker/docker#8240
, docker/docker#11917
).
Как только вы поймете, как работает ваш проект в Docker, вы, вероятно, захотите настроитьDockerfile
для наследования от не onbuild
варианта и копирования команд из onbuild
варианта Dockerfile
(перемещение строк ONBUILD
до конца и удаление ключевых слов ONBUILD
) в ваш собственный файл так, чтобыу вас есть более жесткий контроль над ними и большая прозрачность для себя и других, смотрящих на ваш Dockerfile
относительно того, что он делает.Это также облегчает добавление дополнительных требований с течением времени (например, установка большего количества пакетов перед выполнением ранее - ONBUILD
шагов).
node:<version>-slim
Это изображение не содержит общих пакетов, содержащихся в теге по умолчанию, и содержит только минимальные пакеты, необходимые для запуска node
.Если вы не работаете в среде, в которой only будет развернут образ node
, и у вас есть ограничения по пространству, мы настоятельно рекомендуем использовать образ этого хранилища по умолчанию.