Выгуливаем Pet-проект: краткий гайд про Docker Hub — push, pull, tags и Free-лимиты

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 идёт мучительно долго 🐢 и финальный образ весит гигабайты 🐘 — стоит задуматься о двух вещах:

  1. Собирать образ локально вручную, а на сервере только запускать docker load или docker-compose up. Это экономит трафик и время на CI/CD.

  2. Выделить отдельный 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  # удалит "потерявшиеся" образы без тегов

💥 Неочевидные моменты

  1. “У меня нет прав!”
    Сначала создайте репозиторий на Docker Hub через UI (или используйте docker push — он создаст его автоматически, если у вас есть права).

  2. “Почему pull такой медленный?”
    Проверьте регион в настройках Docker Desktop (Европа/США) или используйте mirror-серверы.

  3. “Мой образ исчез!”
    Проверьте, не прошло ли 6 месяцев с последнего push (или не удалили ли вы его случайно).


🎯 Вывод

Docker Hub — это не просто “облако для контейнеров”, а инструмент для:

  • Обмена образами приложений (покажите миру ваш doggo-weather-api!).
  • CI/CD без сложных настроек.
  • Версионирования через теги.

Главное — следить за лимитами и не превращать репозиторий в свалку устаревших :latest. Теперь ваш pet-проект готов к прогулке! 🐕

🗓 Дата публикации: 20.09.2024, но это не точно...

Docker CI/CD контейнеризация pet