Введение
Этот учебник проведет вас через процесс перечисления и управления образами Docker в реестре, будь то общедоступный Docker Hub или частный реестр. Вы узнаете, как искать образы, фильтровать список и просматривать метаданные ваших образов Docker, что позволит вам эффективно управлять вашими контейнерными приложениями.
Введение в реестры Docker
Что такое реестр Docker?
Реестр Docker — это централизованный хранилище для хранения, управления и распространения образов Docker. Он служит важным компонентом инфраструктуры для развертывания и совместного использования контейнеров. Реестры Docker позволяют разработчикам отправлять, получать и управлять образами контейнеров в различных средах.
Ключевые компоненты реестров Docker
| Компонент | Описание |
|---|---|
| Репозиторий образов | Место хранения образов Docker |
| Метки образов | Уникальные идентификаторы для определенных версий образов |
| Аутентификация | Механизмы контроля доступа для управления образами |
Архитектура реестра Docker
graph TD
A[Разработчик] -->|Отправить образ| B[Реестр Docker]
B -->|Получить образ| C[Хост контейнера]
B -->|Хранить образ| D[Репозиторий образов]
Популярные реестры Docker
- Docker Hub (Официальный общедоступный реестр)
- Amazon Elastic Container Registry
- Google Container Registry
- Azure Container Registry
- Самостоятельно настраиваемые частные реестры
Основные операции с реестром Docker
Получение образа из Docker Hub
docker pull ubuntu:latest
Отправка образа в реестр
docker login registry.example.com
docker tag my-image:v1 registry.example.com/my-image:v1
docker push registry.example.com/my-image:v1
Сценарии использования реестров Docker
Реестры Docker необходимы для:
- Централизованного хранения образов
- Управления версиями образов контейнеров
- Безопасного распространения образов
- Непрерывной интеграции и развертывания
- Управления контейнерами в нескольких средах
Работа с образами реестра
Поток управления образами
graph LR
A[Локальное развитие] -->|Сборка| B[Образ Docker]
B -->|Тегирование| C[Тегирование образа]
C -->|Отправка| D[Реестр Docker]
D -->|Получение| E[Удаленная среда]
Основные операции с образами
Поиск образов
docker search ubuntu
docker search --limit 5 python
Получение образов из реестра
## Получение определенной версии образа
docker pull nginx:1.21
docker pull python:3.9-slim
## Получение последней версии образа
docker pull alpine:latest
Стратегии тегирования образов
| Тип тега | Пример | Описание |
|---|---|---|
| Версионный тег | myapp:1.0 |
Конкретный выпуск версии |
| Тег последней версии | myapp:latest |
Самая последняя версия |
| Тег среды | myapp:production |
Образ, специфичный для среды |
Создание и отправка пользовательских образов
## Сборка пользовательского образа
docker build -t myapp:v1 .
## Тегирование образа для реестра
docker tag myapp:v1 registry.example.com/myapp:v1
## Отправка в удаленный реестр
docker push registry.example.com/myapp:v1
Расширенное управление образами
Перечисление локальных и удаленных образов
## Список локальных образов
docker images
## Список образов в удаленном реестре
docker manifest inspect nginx
Очистка и удаление образов
## Удаление неиспользуемых образов
docker image prune
## Удаление конкретного образа
docker rmi nginx:latest
Безопасность реестра и лучшие практики
Аутентификация и контроль доступа
graph TD
A[Пользователь] -->|Удостоверение| B[Реестр Docker]
B -->|Авторизация| C{Контроль доступа}
C -->|Разрешено| D[Получение/отправка образа]
C -->|Запрещено| E[Доступ отклонен]
Методы аутентификации реестра
| Метод | Описание | Уровень безопасности |
|---|---|---|
| Базовая аутентификация | Имя пользователя/пароль | Низкий |
| Аутентификация на основе токенов | Аутентификация JWT | Средний |
| OAuth | Внешний поставщик идентификации | Высокий |
Реализация защищенного частного реестра
Настройка базовой аутентификации
## Установка утилиты htpasswd
sudo apt-get install apache2-utils
## Генерация файла паролей
htpasswd -Bc /etc/docker/registry/htpasswd username
## Настройка реестра с аутентификацией
docker run -d \
-p 5000:5000 \
-v /etc/docker/registry/htpasswd:/etc/docker/registry/htpasswd \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/etc/docker/registry/htpasswd" \
registry:2
Сканирование образов и управление уязвимостями
Сканирование образов Docker на предмет уязвимостей
## Установка сканера уязвимостей Trivy
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - | sudo apt-key add -
sudo add-apt-repository "deb $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install trivy
## Сканирование образа Docker на предмет уязвимостей
trivy image nginx:latest
Версионирование и управление образами
Реализация стратегии тегирования образов
## Пример семантического версионирования
docker tag myapp:latest myapp:1.0.0
docker tag myapp:latest myapp:1.0.0-stable
## Отправка версионированных образов
docker push myregistry.com/myapp:1.0.0
docker push myregistry.com/myapp:1.0.0-stable
Учет сетевой безопасности
Обеспечение безопасности коммуникаций реестра
## Включение TLS для реестра
docker run -d \
-p 5000:5000 \
-v /path/to/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
Лучшие практики контроля доступа
- Реализовать принцип наименьших привилегий
- Использовать надежные и уникальные пароли
- Регулярно обновлять учетные данные
- Включить многофакторную аутентификацию
- Реализовать белый список IP-адресов
Резюме
Освоив техники, описанные в этом руководстве, вы сможете эффективно перечислять и управлять образами Docker в реестре, гарантируя доступ к нужным версиям и конфигурациям для ваших контейнерных приложений. От поиска и фильтрации до проверки метаданных и автоматизации получения образов, вы приобретёте навыки для оптимизации процессов управления и развертывания образов Docker.



