Dockerfile. Как Лучше Всего Разместить В Репозитории Образ Докера С Несколькими Тегами?

  • Автор темы Sonvin
  • Обновлено
  • 22, Oct 2024
  • #1

Я видел много репозиториев с образами Docker и думаю (поправьте меня, если мои догадки ошибочны), что проекты, обрабатывающие образ Docker с несколькими тегами, можно сгруппировать в три группы:

  • Dockerfiles с разными именами в одном каталоге.
  • Dockerfiles с одинаковым именем (т. е. «Dockerfile») в разных каталогах.
  • Dockerfiles с одинаковым именем (т. е. «Dockerfile») в разных ветках.

Я просмотрел страницу документации Docker, но нет никаких предложений о том, как управлять несколькими изображениями тегов. Я не ищу субъективного ответа. Конечно, любой совет будет оценен по достоинству, но я хочу знать плюсы и минусы каждой из трех возможностей.

Конечно, есть вероятность, что я ничего не понимаю в том, как следует развертывать образы докеров. В этом неудачном случае, пожалуйста, будьте милосердны и укажите мне правильное направление.


Тематическое исследование

Я хотел задать общий вопрос, но понял, что, возможно, он слишком широк. По этой причине я объясняю здесь, каков мой случай, надеясь, что это может помочь немного больше в том, чего я хотел достичь и что я сделал сейчас (этот вопрос касается только части того, чего я хотел достичь).

Я хочу разработать автоматическую сборку Docker Hub, связанную с репозиторием Git Hub. Изображения относятся к LaTeX в Ubuntu. Первая сборка с тегами

1.3.1-develop-base
, starts from Ubuntu 18.04 and comes with
2.3-full
. Еще одна сборка с тегом
1.0-base
, starts from the build tagged
develop-base
и поставляется с
full
. Another two builds, tagged
base
и
base
, will start from the respectively builds without 'develop' and will come with writing and visualization tools. All the builds will probably have some semantic versioning system.

То, что я сделал прямо сейчас, это реализовать

base
and
full
через два разных файла Docker в два разных каталога в одном репозитории Git Hub. Всякий раз, когда тег
base
or
full
создается/перемещается, запускается соответствующая сборка. В этой реализации есть проблема: если я переместил тег
base
, the image
develop-full
построен правильно, но все изображения, которые от него зависят, не создаются заново, и мне приходится запускать их вручную. Я подумал, что нужно иметь ветку для каждого помеченного изображения (с соответствующими автоматическими сборками, запускаемыми при каждом новом нажатии на эту ветку) и систему тегов для отслеживания номера версии (с соответствующими автоматическими сборками, запускаемыми при каждом новом нажатии на эту ветку). ярлык). Теги будут
develop-base
,
texlive-full
,
base
, etc. for each latest version and with semantic versioning for each version, including the latest, i.e.
full
,
texlive-base
,
base
, и т.д. В последнем случае при автоматическом запуске сборки, вероятно, придется обрабатывать регулярное выражение для автоматической маркировки изображений номером версии.

Я понимаю, что мой вопрос не очень связан с тем, чего я хотел достичь, но я хочу научиться ходить, прежде чем пытаться бегать. Таким образом, я хочу понять, когда и почему следует выбирать тот или иной способ размещения репозитория Docker Hub с несколькими образами и какие это способы. Сам проект изображений LaTeX, который, возможно, может показаться вам очень наивным, заключается в глубоком понимании того, как работают docker, docker Hub, Docker Cloud, Docker Compose и т. д. работа.

#docker #dockerfile #learning

Sonvin


Рег
10 Dec, 2016

Тем
73

Постов
218

Баллов
623
  • 25, Oct 2024
  • #2

Если вы думаете о Dockerfile как о своего рода "спецификация материалов" для ваших контейнеров, то необходимо учитывать следующее:

  • контейнерные среды в основном одинаковы — вы можете использовать множество файлов Dockerfile в одной папке или даже один файл Dockerfile с параметризованными сборками.
  • Контейнерные среды являются или могут отклоняться с точки зрения дополнительных файлов конфигурации «частей локальной сборки», сценариев и т. д., тогда вам лучше использовать отдельные папки.

Ветвление скорее связано с развитием версии, или также независимые функции, которые потом в любом случае придется объединить вместе. Видеть Git-поток по этой теме.

В качестве эталонного проекта проверьте, например, проект GitHub ссылка из Tomcat Docker Hub сайт. Здесь вы найдете разные папки, даже с отдельными файлами Dockerfile.

См. также этот дистрибутив TeX-Docker:

Примечание: как ни странно, не существует «официального» дистрибутива Docker для TeX, в то время как во многих других хорошо зарекомендовавших себя сообществах с открытым исходным кодом он есть. библиотека вход.

 

Tronitech


Рег
18 Feb, 2015

Тем
75

Постов
198

Баллов
583
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно