Docker Hub — это как собачий парк для ваших контейнеров: место, где они могут бегать на свободе, знакомиться с другими и не путать вам под ногами в локальном docker images. В статье разберём, как правильно “выгуливать” pet-проекты: от базовых команд до хитростей с тегами и подводных камней бесплатного тарифа.
🐶 Зачем вообще Docker Hub?
Представьте: вы написали микросервис для генерации мемов с котиками. Хотите:
- Поделиться им с другом (“Смотри, вот мой
meow-api:latest!”). - Развернуть его на сервере за два клика.
- Автоматизировать сборку через GitHub Actions.
Без Docker Hub это как выгуливать питомца в квартире — технически возможно, но соседи будут недовольны.
📦 Основные команды: “Поводок и ошейник”
1. Логинимся
docker login
Как пристегнуть поводок перед выходом.
2. Пушим образ
docker push username/meow-api:1.0
Отправляем питомца в парк. Важно дать ему имя (username/) и версию (:1.0), иначе он потеряется среди других.
3. Забираем обратно
docker pull username/meow-api:1.0
“Пора домой!” — если образ изменился на сервере, локальная копия устарела.
🏷️ Теги: “Именные жетоны”
Теги — это версии вашего образа. Базовые правила:
| Тег | Когда использовать | Риски |
|---|---|---|
:latest |
Для демо или тестов | Может сломаться в любой момент |
:1.0 |
Релизные версии | Надо следить за семантическим версионированием |
:commit-a1b2 |
Для отладки конкретного коммита | Беспорядок в репозитории |
Антипаттерн:
Пушить 20 тегов :test1, :test2… — это как вешать на собаку все её старые ошейники сразу.
🆓 Free-лимиты: “Бесплатный сыр”
Docker Hub позволяет бесплатно:
- 1 приватный репозиторий (но с 2020 года — только для Pro).
- Неограниченно публичных (но см. ниже).
- 6 месяцев бездействия — потом образ удаляется (как забытый мячик в парке).
Ловушка:
Если ваш meow-api скачали 10 000 раз за месяц — могут ограничить pull-запросы для анонимных пользователей. Решение:
docker login # даже для pull
Или мигрировать на GitHub Container Registry (GHCR).
🛠️ Практика: автоматизируем “выгул”
1. Собираем и пушим через GitHub Actions
# .github/workflows/docker.yml
jobs:
build:
steps:
- run: docker build -t username/meow-api:$GITHUB_SHA .
- run: docker push username/meow-api:$GITHUB_SHA
⚠️ Если
docker buildидёт мучительно долго 🐢 и финальный образ весит гигабайты 🐘 — стоит задуматься о двух вещах:
-
Собирать образ локально вручную, а на сервере только запускать
docker loadилиdocker-compose up. Это экономит трафик и время на CI/CD. -
Выделить отдельный
base image, содержащий системные зависимости, и кэшировать его. Так ты не будешь каждый раз пересобиратьapt install,bundle installи ноду с фронтом.
🧠 Всё, что редко меняется — выноси вверх в Dockerfile или в базовый образ. Это принцип, который ускоряет сборку в разы. Если интересны детали, то читай: Docker-образы как чемоданы: как собрать быстро и не тащить лишнее
2. Добавляем тег при релизе
docker tag username/meow-api:abc123 username/meow-api:1.1
docker push username/meow-api:1.1
3. Чистим локальные образы
docker image prune # удалит "потерявшиеся" образы без тегов
💥 Неочевидные моменты
-
“У меня нет прав!”
Сначала создайте репозиторий на Docker Hub через UI (или используйтеdocker push— он создаст его автоматически, если у вас есть права). -
“Почему pull такой медленный?”
Проверьте регион в настройках Docker Desktop (Европа/США) или используйте mirror-серверы. -
“Мой образ исчез!”
Проверьте, не прошло ли 6 месяцев с последнего push (или не удалили ли вы его случайно).
🎯 Вывод
Docker Hub — это не просто “облако для контейнеров”, а инструмент для:
- Обмена образами приложений (покажите миру ваш
doggo-weather-api!). - CI/CD без сложных настроек.
- Версионирования через теги.
Главное — следить за лимитами и не превращать репозиторий в свалку устаревших :latest. Теперь ваш pet-проект готов к прогулке! 🐕