DockerHub и реестры образов
DockerHub и реестры образов
У новичка может возникнуть вопрос - а как узнать название нужного образа, чтобы из него развернуть контейнер?
По аналогии с GitHub, у Docker есть свой реестр с тысячами готовых образов - Docker Hub. Это самое популярное место для поиска и загрузки образов.
Поиск образов через интерфейс.
Чтобы найти образы на Docker Hub, нужно перейти на сайт (https://hub.docker.com/), и в строке поиска ввести название приложения или технологии, например, nginx, mysql, python.
Кроме официальных образов, есть и пользовательские. многие могут быть и полезны, но стоит проверять на надёжность. Официальные образы помечены как Official Image.
После того, как нашли нужный образ, вы можете запустить его с помощью команды docker run. Например:
docker run -d -p 80:80 nginx
Эта команда скачает и запустит официальный образ Nginx.
Поиск образов через CLI
Если вы предпочитаете работать в терминале, Docker предоставляет команду docker search, которая позволяет искать образы прямо из командной строки. Пример:
docker search python
Вывод команды будет в виде таблицы:
- NAME : Название образа.
- DESCRIPTION : Краткое описание.
- STARS : Популярность образа (чем больше звезд, тем лучше).
- OFFICIAL : Указывает, является ли образ официальным.
- AUTOMATED : Указывает, был ли образ автоматически собран.
Другие реестры контейнеров
Помимо Docker Hub, существуют другие реестры образов:
- Quay.io — альтернативный реестр контейнеров, который часто используется для корпоративных проектов.
- GitHub Container Registry — реестр, интегрированный с GitHub. Многие проекты публикуют свои образы здесь.
- Amazon ECR — сервис AWS для хранения и управления Docker-образами.
- Google GCR — реестр от Google Cloud.
Если хотим использовать образ из другого реестра, нужно указать полный путь к образу, включая домен реестра. Например:
docker run quay.io/bitnami/nginx
Для работы с Amazon ECR придётся сначала выполнить аутентификацию:
aws ecr get-login-password | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
И только затем можно запустить образ:
docker run <aws_account_id>.dkr.ecr.<region>.amazonaws.com/repo-name:tag
Каждый образ может иметь несколько версий, которые обозначаются тегами. Теги позволяют выбирать конкретную версию образа:
docker run python:3.9
docker run python:3.10
docker run python:latest
latest: Последняя версия (по умолчанию).
Увидеть доступные теги можно на странице образа в реестре. К примеру, на Docker Hub будет вкладка Tags.

Создание своих образов
Если вы не нашли подходящий образ, вы можете создать свой, используя Dockerfile. После создания образа вы можете загрузить его в Docker Hub или другой реестр.
Нужно сначала создать аккаунт на Docker Hub, а затем авторизоваться в CLI:
docker login
Потом нужно пометить образ:
docker tag my-image username/my-image:tag
И загрузить:
docker push username/my-image:tag
Локальные образы
Когда выполняется команда docker run, Docker сначала проверяет, есть ли запрашиваемый образ локально. Если образ не найден, Docker автоматически пытается скачать его из реестра (Docker Hub).
Когда запускается команда docker run <image>:<tag>, Docker выполняет следующие шаги:
- Docker проверяет, есть ли указанный образ в локальном хранилище образов на ПК. Локальное хранилище — это кэш, где хранятся все образы, которые скачали или создали. Если тег не указан, будет подставляться тег latest.
- Если образ существует в локальном хранилище, Docker будет использовать его для запуска;
- Если образ не найден локально, Docker пытается скачать его из удалённого реестра:
- отправляет запрос в реестр, чтобы найти образ с указанным именем и тегом;
- если образ найден, он скачивается и сохраняется в локальном хранилище;
- после загрузки образа Docker запускает контейнер.
Таким образом, Docker работает по приоритету:
Локальное хранилище - Удалённый реестр - Ошибка (если нет нигде).
Локальные образы хранятся в системе в виде слоёв (layers). Каждый слой представляет собой изменение, сделанное в процессе сборки образа. Это позволяет эффективно использовать дисковое пространство и кэширование.
Локальные образы хранятся в каталоге Docker на компьютере. Расположение зависит от операционной системы:
- Linux : /var/lib/docker/
- Windows (Docker Desktop) : Внутри виртуальной машины WSL2 или Hyper-V.
- macOS (Docker Desktop) : Внутри виртуальной машины. Чтобы увидеть список всех локальных образов, используется команда:
docker images
В выводе будут следующие столбцы:
- REPOSITORY : Имя образа.
- TAG : Тег образа (версия).
- IMAGE ID : Уникальный идентификатор образа.
- CREATED : Дата создания образа.
- SIZE : Размер образа.
Чтобы удалить образ, используется команда:
docker rmi <image_id>
Если образ используется хотя бы одним контейнером (даже остановленным), Docker выдаст ошибку. Поэтому перед удалением образа нужно удалить сначала контейнер:
docker rm <container_id>
Когда Docker скачивает образ из удалённого реестра, он делает это поэтапно, слой за слоем. Образ состоит из нескольких слоёв, каждый из которых соответствует одной инструкции в Dockerfile. Например:
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y python3
Здесь будет три слоя:
- Базовый образ ubuntu:20.04.
- Результат выполнения apt-get update.
- Результат выполнения apt-get install -y python3.
Docker загружает только те слои, которых ещё нет в локальном хранилище. Если часть слоёв уже есть (например, базовый образ ubuntu:20.04), Docker использует их повторно.
Чтобы узнать, какие образы были скачаны из удалённого реестра, а какие созданы локально, используйте команду:
docker inspect <image_id>
Docker активно использует кэширование для оптимизации работы с образами. Если вы запускаете один и тот же образ несколько раз, Docker не будет заново скачивать его, если он уже есть локально. Если вы создаёте новый образ с помощью Dockerfile, Docker использует кэширование слоёв, чтобы ускорить процесс сборки.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Контейнер - это среда исполнения. Не программа, а экземпляр образа. Docker отправляет образ в указанный реестр, и если реестр требует авторизации используется команда docker login. В системах непрерывной интеграции Docker Compose используется для запуска тестов в изолированной среде. Пайплайн выполняет команду docker-compose up --build перед запуском тестов. Другие реализации UFS - AUFS (Advanced Multi-Layered Unification Filesystem, используется в старых версиях Docker) и Btrfs/ZFS (альтернативные файловые системы с поддержкой UFS). Если контейнеры потребляют больше ресурсов, чем доступно на хосте, это приводит к проблемам — нехватка памяти - ОС начинает использовать подкачку (swap), что сильно замедляет работу, перегрузка CPU -… Сеть в контейнерах — материал энциклопедии Вселенная IT. ★ Dockerfile — это текстовый файл, содержащий инструкции для автоматической сборки Docker-образа. Он является ключевым элементом по работе с Docker, так как позволяет создавать образы, которые можно… ★ Docker Swarm — это встроенная система оркестрации Docker, которая позволяет создавать и управлять кластерами контейнеров. Она проста в использовании и интегрирована с Docker Engine. Helm — это пакетный менеджер для Kubernetes. Chart — набор YAML-файлов (шаблонов), описывающих, как запустить под, как дать доступ, как принимать внешний трафик. Практика развёртывания приложения через Docker Desktop. Ниже представлена структурированная информация в виде таблицы, которая поможет вам понять основные этапы настройки и управления контейнерами, репозиториями, сборкой приложений и оркестрацией. Docker — это платформа для создания, запуска и управления контейнеризированными приложениями. Контейнеры изолируют процессы и зависимости, обеспечивая единообразие выполнения в разных средах. Docker…Контейнеризация
Docker
docker-compose
Объекты Docker
Работа с Docker
Сеть в контейнерах
Dockerfile
Docker Swarm и Kubernetes
Реализация Kubernetes
Первые шаги с Docker и Kubernetes
Универсальная шпаргалка
Справочник по Docker