Нужно ли делиться образом Docker, если я могу просто поделиться файлом Docker вместе с исходным кодом?

Я только начинаю изучать докер. Полезен ли репозиторий докеров (например, Docker Hub)? Я вижу образ докера как пакет исходного кода и конфигураций среды (dockerfile) для развертывания моего приложения. Хорошо, если это просто пакет, почему я не могу просто поделиться своим исходным кодом с dockerfile (например, через GitHub)? Затем пользователь просто скачивает все это и использует docker build и docker run. И нет необходимости пушить образ докера в репозиторий.

В идеале именно так это и работает, docker hub используется для push\pull образов. Так, например, если вы занимаетесь разработкой приложения и хотите иметь поддержку базы данных, вы не хотите тратить время на установку конфигурационных материалов базы данных для себя, просто извлеките образ Mongo, sqllite, postgres и начните. Вы также можете просто поделиться своим кодом на git, и это следует делать, имея в виду, что это не настраиваемый базовый образ, который является локальным на вашем ноутбуке\рабочем столе и т. д.

Raj Verma 13.12.2020 20:19
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
1
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вот как это работает. Вам нужно поместить файлы конфигурации в свой код, т.е. Dockerfile и docker-compose.yml.

Ответ принят как подходящий

Есть две веские причины предпочесть размещать изображение где-либо:

  1. Как нижестоящий пользователь, вы можете просто docker run получить изображение из репозитория без дополнительных шагов по его проверке или созданию.
  2. Если вы используете скомпилированный язык (C, Java, Go, Rust, Haskell,...), то образ будет содержать только скомпилированные артефакты, а не исходный код.

Думайте об этом, как и о любом другом программном обеспечении: для большинства вещей с открытым исходным кодом вы можете загрузить исходный код из Интернета и скомпилировать его самостоятельно, или вы можете apt-get install или brew install собрать пакет с помощью менеджера пакетов.

По той же аналогии многие вещи с открытым исходным кодом распространяются в основном в виде исходного кода, а люди, не являющиеся основным разработчиком, распространяют двоичные файлы. В этом контексте это то же самое, что добавить Dockerfile в корень репозитория GitHub вашего приложения, но не публиковать изображение самостоятельно. Если вы не хотите настраивать учетную запись Docker Hub или автоматизацию CI для отправки созданных образов, но все же хотите, чтобы ваш исходный код и инструкции по созданию образа были общедоступными, это разумное решение.

Другие вопросы по теме