База знаний

DockerHub — облачный реестр контейнерных образов

Практическое руководство по DockerHub: что такое Docker-образ, как искать и использовать готовые образы, загружать свои, автоматизировать сборки и работать с альтернативными registry. Актуальные тарифы и лимиты.

Опубликовано

DockerHub — облачный реестр (registry) контейнерных образов Docker. Проще говоря, это «магазин приложений», только не для программ на телефон, а для готовых серверных окружений. Скачал образ — запустил — работает.

📌
Для кого: разработчики, DevOps-инженеры и все, кто хочет разобраться в контейнеризации — от первого docker pull до автоматических сборок и выбора альтернативных registry.

Что такое Docker-образ

Docker-образ — это «слепок» готового окружения: операционная система + нужное ПО + настройки + ваш код. Всё упаковано в один файл, который можно запустить на любом компьютере с Docker. Запущенный образ называется контейнером.

DockerHub решает главную боль разработки — «у меня на компьютере работает, а на сервере нет». Образ одинаково работает везде, где стоит Docker.


Для чего нужен DockerHub

  • Хранение образов. Собрали свой образ — загрузили на DockerHub, чтобы использовать с любого сервера
  • Распространение. Делитесь образами с командой или со всем миром. Публичные образы доступны бесплатно
  • Готовые образы. Тысячи официальных образов: PostgreSQL, Redis, Node.js, Python, Nginx. Не нужно ничего настраивать — скачиваете и запускаете
  • Версионирование. Каждый образ имеет теги (версии), например python:3.12 или node:20-alpine

Аналогия

Если GitHub — хранилище исходного кода, то DockerHub — хранилище готовых к запуску приложений. Не надо компилировать, устанавливать зависимости, настраивать окружение.


Как это работает на практике

1. Скачать готовый образ

docker pull nginx

Одна команда — и у вас на машине готовый веб-сервер.

2. Запустить контейнер

docker run -d -p 8080:80 nginx
# -d = в фоновом режиме
# -p 8080:80 = пробросить порт 80 контейнера на порт 8080 компьютера

Откройте http://localhost:8080 — Nginx работает.

3. Загрузить свой образ

# Регистрируетесь на hub.docker.com
docker login

# Собираете образ
docker build -t ваш_логин/имя_образа:1.0 .

# Пушите на DockerHub
docker push ваш_логин/имя_образа:1.0

4. На другом сервере

docker pull ваш_логин/имя_образа:1.0
docker run -p 5000:5000 ваш_логин/имя_образа:1.0

Поиск и выбор готовых образов

Как искать

  • Заходите на hub.docker.com
  • Или прямо из терминала: docker search nginx

На что смотреть

  • Official Image — официальный образ, поддерживается создателями ПО
  • Verified Publisher — проверенный издатель
  • Docker Hardened Images (новинка) — безопасные минимальные образы от Docker с enterprise-фичами (сканирование, патчи, SBOM)
  • Количество скачиваний (pulls) — чем больше, тем популярнее
  • Дата последнего обновления — свежие образы безопаснее

Популярные образы для старта

ОбразНазначениеПример
nginxВеб-сервер и reverse proxydocker run -p 80:80 nginx
postgres:16База данных PostgreSQLdocker run -e POSTGRES_PASSWORD=secret postgres:16
redisКэш и хранилище данныхdocker run -p 6379:6379 redis
python:3.12-slimPython окружениеdocker run -it python:3.12-slim python
node:20-alpineNode.js окружениеdocker run -it node:20-alpine node
alpineМинималистичный Linux (~5 MB)docker run -it alpine sh

Теги и версии

Каждый образ имеет теги — это версии или варианты.

Примеры:

  • python:3.12 — Python версии 3.12
  • python:3.12-slim — облегчённая версия (меньше размер)
  • python:3.12-alpine — на базе Alpine Linux (ещё меньше)
  • python:latest — последняя версия
⚠️
Правило: всегда указывайте конкретную версию в проектах. latest может внезапно измениться и сломать приложение.
# ❌ Плохо (версия может измениться)
docker pull python:latest

# ✅ Хорошо (версия зафиксирована)
docker pull python:3.12-slim

Создание и загрузка своего образа

Шаг 1. Создайте Dockerfile

FROM python:3.12-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

Шаг 2. Соберите образ

docker build -t johnsmith/my-app:1.0 .

Шаг 3. Проверьте локально

docker run -p 5000:5000 johnsmith/my-app:1.0

Шаг 4. Загрузите на DockerHub

docker push johnsmith/my-app:1.0

Теперь образ доступен с любого компьютера через docker pull johnsmith/my-app:1.0.


Публичные vs приватные репозитории

ПараметрПубличныеПриватные
ВидимостьВсе в поискеТолько вы и ваша команда
СкачиваниеКто угодноНужна авторизация
Количество (Personal)Без ограничений1 бесплатно
Количество (Pro+)Без ограниченийБез ограничений
Подходит дляOpen-source проектыКоммерческие и внутренние проекты
💡
Новинка (февраль 2026): администраторы организаций теперь могут запретить создание публичных репозиториев в namespace организации через настройку Disable public repositories.

Docker Compose и DockerHub

Docker Compose — инструмент для запуска нескольких контейнеров одной командой.

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"

  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret

  cache:
    image: redis:alpine
docker compose up -d

Все образы автоматически скачаются с DockerHub, если их нет локально.


Автоматические сборки

Можно связать DockerHub с GitHub, чтобы при каждом пуше автоматически собирался новый образ:

  1. Создаёте репозиторий на GitHub с Dockerfile
  2. В DockerHub: Create → Create Automated Build
  3. Связываете с GitHub-репозиторием
  4. При каждом пуше автоматически собирается и публикуется новый образ

Зачем:

  • Не нужно собирать и пушить образы вручную
  • Прозрачность — все видят исходники
  • Автоматизация CI/CD

Безопасность образов

Что проверять перед использованием

  • ✅ Официальный образ или Verified Publisher
  • ✅ Много скачиваний (популярный = проверенный)
  • ✅ Недавно обновлялся
  • ✅ Есть документация
  • ⚠️ Избегайте образов от неизвестных авторов с малым количеством скачиваний

Сканирование на уязвимости

# Docker Scout — встроенный инструмент анализа уязвимостей
docker scout cves nginx

# Быстрый обзор
docker scout quickview nginx
💡
Docker Scout заменил устаревший docker scan. Он анализирует образы на уязвимости, проверяет лицензии и рекомендует обновления базовых образов. Входит во все платные планы.

Тарифы и лимиты

ПланЦенаPull-лимитПриватные репозиторииЧто включено
Personal (бесплатно)$0200 за 6 часов1Docker Desktop, Hub, Scout (базовый)
Pro$9/месБезлимитноБезлимитно • Build Cloud, Testcontainers Cloud, Scout (полный)
Team$15/мес на пользователяБезлимитноБезлимитно • командный доступ, управление правами
BusinessИндивидуальноБезлимитноБезлимитно • SSO, SCIM, аудит, SLA, поддержка
Без авторизации100 за 6 часовТолько pull публичных образов
📌
Важно: с 2025 года Docker объединил все продукты (Desktop, Hub, Build Cloud, Scout, Testcontainers Cloud) в единую подписку. Отдельные подписки больше не нужны. Потребительские сборы за pull-ы для платных планов отменены — безлимитные pulls для всех платящих пользователей.

Альтернативные registry

DockerHub — не единственный реестр образов:

RegistryОсобенностьКогда использовать
GitHub Container Registry (ghcr.io)Нативная интеграция с GitHub ActionsПроекты на GitHub, CI/CD через Actions
Google Artifact Registry (gcr.io)Интеграция с Google CloudПроекты в GCP
Amazon ECRИнтеграция с AWSПроекты в AWS
GitLab Container RegistryВстроен в GitLab CI/CDПроекты в GitLab
Quay.io (Red Hat)Расширенное сканирование безопасностиEnterprise, OpenShift
Self-hosted registryПолный контроль, без лимитовПриватные образы, когда важна независимость
# Пример: self-hosted registry за 15 минут
docker run -d -p 5000:5000 --restart always --name registry registry:3

# Использование
docker tag my-app localhost:5000/my-app
docker push localhost:5000/my-app

DockerHub остаётся самым популярным и простым для старта — особенно для публичных образов и open-source.


Типичные ошибки новичков

  • latest в продакшене — версия может измениться и сломать приложение. Всегда указывайте конкретную версию
  • Огромные образы (несколько GB) — используйте -alpine или -slim варианты
  • Секреты в образе — не храните API-ключи и пароли в Dockerfile. Используйте environment variables или Docker secrets
  • Запуск от root внутри контейнера — создавайте непривилегированного пользователя в Dockerfile
  • Нет .dockerignore — создавайте .dockerignore (как .gitignore), чтобы не копировать лишние файлы в образ
  • Игнорирование уязвимостей — регулярно запускайте docker scout cves для проверки образов
  • Анонимные pulls в CI/CD — лимит всего 100 за 6 часов. Всегда авторизуйтесь через docker login

Полезные команды

Образы

# Список всех образов
docker images

# Скачать образ
docker pull nginx:alpine

# Удалить образ
docker rmi nginx

# Удалить все неиспользуемые образы
docker image prune -a

# Информация об образе
docker inspect nginx

# История слоёв
docker history nginx

Контейнеры

# Список запущенных контейнеров
docker ps

# Все контейнеры (включая остановленные)
docker ps -a

# Остановить контейнер
docker stop container_name

# Удалить контейнер
docker rm container_name

# Логи контейнера
docker logs container_name

# Зайти внутрь контейнера
docker exec -it container_name sh

Быстрый старт за 5 минут

  1. Установите Docker Desktop
  2. Зарегистрируйтесь на hub.docker.com
  3. Запустите:
docker run -d -p 8080:80 nginx
  1. Откройте http://localhost:8080 — видите Nginx
  2. Поздравляю, вы запустили свой первый контейнер! 🎉

Ссылки

РесурсСсылка
Docker Hubhub.docker.com
Документация Dockerdocs.docker.com
Docker Hub Release Notesdocs.docker.com/docker-hub/release-notes
Docker Scoutdocs.docker.com/scout
Docker Hub Usage & Limitsdocs.docker.com/docker-hub/usage
Тарифы Dockerdocker.com/pricing

По теме