Я только начинаю изучать докер. Полезен ли репозиторий докеров (например, Docker Hub)? Я вижу образ докера как пакет исходного кода и конфигураций среды (dockerfile) для развертывания моего приложения. Хорошо, если это просто пакет, почему я не могу просто поделиться своим исходным кодом с dockerfile (например, через GitHub)? Затем пользователь просто скачивает все это и использует docker build
и docker run
. И нет необходимости пушить образ докера в репозиторий.
Вот как это работает. Вам нужно поместить файлы конфигурации в свой код, т.е.
Dockerfile
и docker-compose.yml
.
Есть две веские причины предпочесть размещать изображение где-либо:
docker run
получить изображение из репозитория без дополнительных шагов по его проверке или созданию.Думайте об этом, как и о любом другом программном обеспечении: для большинства вещей с открытым исходным кодом вы можете загрузить исходный код из Интернета и скомпилировать его самостоятельно, или вы можете apt-get install
или brew install
собрать пакет с помощью менеджера пакетов.
По той же аналогии многие вещи с открытым исходным кодом распространяются в основном в виде исходного кода, а люди, не являющиеся основным разработчиком, распространяют двоичные файлы. В этом контексте это то же самое, что добавить Dockerfile
в корень репозитория GitHub вашего приложения, но не публиковать изображение самостоятельно. Если вы не хотите настраивать учетную запись Docker Hub или автоматизацию CI для отправки созданных образов, но все же хотите, чтобы ваш исходный код и инструкции по созданию образа были общедоступными, это разумное решение.
В идеале именно так это и работает, docker hub используется для push\pull образов. Так, например, если вы занимаетесь разработкой приложения и хотите иметь поддержку базы данных, вы не хотите тратить время на установку конфигурационных материалов базы данных для себя, просто извлеките образ Mongo, sqllite, postgres и начните. Вы также можете просто поделиться своим кодом на git, и это следует делать, имея в виду, что это не настраиваемый базовый образ, который является локальным на вашем ноутбуке\рабочем столе и т. д.