Что такое Docker Hub и для чего он используется?

«Что такое Docker Hub и для чего он используется?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker Hub — это облачный реестр (registry) от компании Docker, Inc., который служит централизованным хранилищем для образов Docker. Это публичный сервис, аналогичный GitHub для кода, но предназначенный для контейнерных образов.

Основные функции Docker Hub:

  1. Хранение и распространение образов:

    • Официальные образы (Official Images): Проверенные, оптимизированные и безопасные образы от вендоров и сообщества (например, nginx, postgres, node, python). Они являются стандартом де-факто для развёртывания соответствующих технологий.
    • Публичные репозитории: Любой пользователь может загрузить (push) свой образ и сделать его доступным для всех.
    • Приватные репозитории: Хранение внутренних, закрытых образов компании. Количество приватных репозиториев на бесплатном тарифе ограничено.
  2. Автоматические сборки (Automated Builds): Можно связать репозиторий Docker Hub с GitHub или Bitbucket. При каждом пуше в указанную ветку Docker Hub автоматически соберёт новый образ по инструкциям из Dockerfile и присвоит ему тег.

  3. Веб-хуки (Webhooks): Позволяют настроить интеграции, например, отправлять уведомления в Slack или запускать pipeline в CI/CD (Jenkins, GitLab CI) после успешной сборки образа.

Базовые команды для работы с Docker Hub:

# 1. Авторизация в Docker Hub из командной строки
docker login

# 2. Поиск образа (например, Redis)
docker search redis

# 3. Загрузка (pull) официального образа Redis с тегом 'alpine'
docker pull redis:alpine

# 4. Создание своего образа и публикация на Docker Hub
#    а) Создать Dockerfile
#    б) Собрать образ с тегом, соответствующим формату <dockerhub-username>/<repository-name>:<tag>
docker build -t myusername/my-web-app:1.0 .

#    в) Загрузить (push) образ в репозиторий на Docker Hub
docker push myusername/my-web-app:1.0

# 5. Запуск контейнера из образа с Docker Hub (если образа нет локально, он автоматически скачается)
docker run -d -p 8080:80 --name my-app myusername/my-web-app:1.0

Альтернативы и корпоративные решения:

  • Docker Registry (он-премис): Можно развернуть собственный приватный реестр внутри инфраструктуры компании.
  • Облачные реестры от вендоров: AWS ECR (Elastic Container Registry), Google Container Registry (GCR), Azure Container Registry (ACR). Они тесно интегрированы с экосистемами соответствующих облаков.
  • Harbor: Популярное решение с открытым исходным кодом для управления артефактами (образами, Helm-чартами), предоставляющее расширенные функции безопасности (сканирование уязвимостей) и управления доступом.

Docker Hub — это фундаментальный инструмент в workflow Docker, который упрощает обмен, версионирование и развёртывание контейнеризированных приложений.