Реестр контейнеров DigitalOcean: руководство по использованию, безопасности и интеграции

Быстрые ссылки
Преимущества и функции
Создание реестра
Подключение Docker CLI
Использование Docker для push/pull образов
Сборщик мусора
Безопасность и лучшие практики
Заключение
DigitalOcean Container Registry предоставляет приватное облачное пространство для хранения и распространения Docker-образов. Кроме простого репозитория образов, сервис интегрируется с другими продуктами DigitalOcean: вы можете развернуть образ на App Platform или использовать его в Managed Kubernetes.
Преимущества и функции
Container Registry — это конкурирующее с Docker Hub решение, которое позволяет хранить Docker-образы внутри вашего аккаунта DigitalOcean. Это удобно, если образы будут использоваться совместно с другими сервисами DigitalOcean: не нужно заводить отдельный платный аккаунт на Docker Hub для приватных образов.
Ключевые моменты:
- Данные автоматически распределяются между несколькими регионами дата-центров DigitalOcean, что ускоряет загрузку образов при запуске контейнеров или при pull.
- Реестр совместим с OCI, поэтому привычные инструменты экосистемы (docker, kubectl, контейнерные рантаймы) работают без доработок.
- Интеграция с App Platform и Kubernetes упрощает CI/CD и деплой в DigitalOcean.
Команды docker push и docker pull будут работать как обычно после подключения учётных данных к CLI.
Важно: в текущей реализации вы не сможете вручную выбрать регион хранения реестра — DigitalOcean управляет этим автоматически.
Создание реестра
Container Registry доступен бесплатно, но бесплатный тариф имеет существенные ограничения. На бесплатном тарифе вы получаете:
- 1 репозиторий (top-level image name),
- 500 МБ хранилища,
- 500 МБ исходящего трафика (egress).
Это достаточно для тестирования, но не для промышленного использования. Тарифы:
- Basic — $5/месяц: 5 репозиториев и 5 ГБ.
- Professional — $20/месяц: неограниченное количество репозиториев и 100 ГБ.
- Плата за превышение хранилища: $0.02 за гигабайт (storage overages).

Чтобы создать реестр, войдите в панель управления DigitalOcean и нажмите ссылку «Container Registry» в левой боковой панели. Задайте уникальное имя реестра и выберите тариф. Имя должно быть уникально в рамках всех реестров DigitalOcean и может содержать до 63 символов: буквы, цифры и дефисы.
Процесс создания займёт несколько секунд. После завершения вы попадёте на панель управления реестром.
Подключение Docker CLI
Чтобы Docker мог push/pull образов в ваш реестр, нужно предоставить ему учётные данные. Есть три способа сделать это:
Использование doctl
Официальный CLI DigitalOcean — doctl — включает скрипт, который настраивает Docker для работы с Container Registry.
Требования: doctl установлен и аутентифицирован в вашем аккаунте DigitalOcean.
Выполните:
doctl registry loginКоманда автоматически добавит учётные данные в ваш Docker-клиент.
Использование API-токена DigitalOcean
API-токены можно использовать для аутентификации в реестре. Создайте токен через «API» внизу левой боковой панели в вашем аккаунте. Нажмите «Generate New Token», задайте имя и нажмите «Generate Token».

Значение токена будет показано один раз — сохраните его. Затем выполните:
docker login registry.digitalocean.comПри запросе имени пользователя и пароля укажите значение токена в обоих полях. После этого Docker сможет работать с реестрами вашего аккаунта.
Замечание: API-токен предоставляет полный доступ к аккаунту в рамках его прав. Рассмотрите возможность создания токена с ограниченными правами (если необходима такая опция) и регулярной ротации ключей.
Скачивание файла с учётными данными Docker
Если вы не хотите генерировать токен или использовать doctl, откройте страницу реестра и нажмите синюю кнопку «Actions» → «Download Docker Credentials». Это скачает config.json, совместимый с Docker.

Файл можно объединить с вашим основным ~/.docker/config.json или использовать флаг –config:
docker --config ~/downloaded-config.json pull registry.digitalocean.com//example-image:latest Push и Pull образов с помощью Docker
После настройки учётных данных образы должны иметь тег в формате:
registry.digitalocean.com//example-image:latest Пример: вы можете подтянуть официальный httpd и отправить его в ваш реестр:
docker pull httpd:latestdocker tag httpd:latest registry.digitalocean.com//httpd:latest docker push registry.digitalocean.com//httpd:latest 
На панели управления вашего реестра появится новый образ с тегами. Через UI вы можете просмотреть теги и удалить конкретные теги или все теги образа, используя меню справа.
Сборщик мусора (Garbage Collection)
Удаление тегов не всегда освобождает место: слои образов могут остаться в хранении, если на них ссылаются другие манифесты. Эти «осиротевшие» слои продолжают учитывать лимит хранилища.
DigitalOcean предоставляет инструмент для очистки мусора, который удаляет неиспользуемые слои и манифесты. На панели реестра появится плитка «Empty garbage», если можно освободить место. Нажмите, чтобы начать.

В диалоге можно выбрать удалять ли немаркированные манифесты (untagged manifests). Это действительные образы без тега, доступные только по хешу (например, registry.digitalocean.com/

Во время сборки мусора реестр становится доступным только для чтения. Новые push будут отклоняться до завершения процесса. Очистка начинается после завершения текущих записей, поэтому может быть небольшая задержка. Ход выполнения отображается на панели управления.
DigitalOcean не выполняет автоматическую очистку мусора по расписанию. Однако вы можете запускать её через doctl или API и автоматизировать запуск через cron или CI-пайплайн.
Когда реестр не подходит — ограничения и контрпримеры
- Большие приватные реализации с высокой частотой сборки и огромным объёмом хранения могут оказаться дороже, чем специализированные решения с интегрированными сканерами уязвимостей.
- Если вам нужны автоматические rebuilds, интеграция с внешними CI или сканирование на уязвимости «из коробки», Docker Hub или сервисы как GitHub Container Registry / GitLab могут предоставить дополнительные возможности.
- Когда важна жесткая географическая привязка репозитория к конкретному региону, DigitalOcean не даёт ручного выбора региона для реестра.
Альтернативные подходы
- Docker Hub — хорош для публичных образов и имеет платные приватные репозитории с рядом функций.
- GitHub Container Registry / GitHub Packages — удобно для проектов, уже размещённых в GitHub; интеграция с Actions.
- GitLab Container Registry — тесно интегрирован с GitLab CI/CD.
- Amazon ECR или Google Artifact Registry — подходят для крупных инфраструктур в соответствующих облаках.
Выбор зависит от ваших требований: цена, интеграция с CI/CD, сканирование безопасности, и географическая локализация.
Практическая методика: интеграция в CI/CD (мини-методология)
- Храните имя реестра и artefact-путь в переменных окружения CI.
- На этапе build собирайте образ и тегируйте его с семантическим тегом и latest.
- Аутентификация: используйте секреты CI (API-токен или скачанный config.json).
- Push в реестр; по успешному push запускайте деплойное действие.
- Планируйте периодическую очистку мусора и мониторьте использование хранилища.
Пример шагов в псевдо-CI:
- name: Login to DigitalOcean Registry
run: echo "$DO_API_TOKEN" | docker login registry.digitalocean.com -u $DO_USERNAME --password-stdin
- name: Build and tag
run: docker build -t registry.digitalocean.com/$REGISTRY_NAME/app:$GIT_COMMIT -t registry.digitalocean.com/$REGISTRY_NAME/app:latest .
- name: Push
run: docker push registry.digitalocean.com/$REGISTRY_NAME/app:$GIT_COMMITКонтрольные списки по ролям
Разработчик:
- Тегировать образы с понятными тегами (commit, branch, semver).
- Не пушить секреты в образ.
- Убедиться, что CI использует секреты безопасно.
Оператор (DevOps):
- Мониторить использование хранилища и egress.
- Планировать расписание очистки мусора.
- Настроить уведомления о достижении лимитов.
Инженер по безопасности:
- Проверять хранение API-токенов и их ротацию.
- Ограничивать права токенов, если возможно.
- Делать ревью Dockerfile на предмет секретов и уязвимостей.
SOP: запуск сборки мусора (шаг за шагом)
- Проверить активные операции push/pull; желательно выбрать окно с низкой активностью.
- Уведомить команду о режиме только для чтения на время чистки.
- На панели реестра нажать «Empty garbage» и выбрать опцию удаления untagged manifests (если необходимо).
- Наблюдать за прогрессом в UI или через doctl/API.
- После завершения проверить использованное хранилище и зафиксировать экономию.
Автоматизация через doctl (пример команды):
doctl registry garbage-collect (псевдокоманда — проверьте справку doctl для точного синтаксиса и прав доступа в вашей версии doctl)
Сниппет: полезные команды и подсказки (cheat sheet)
- Вход через doctl:
doctl registry login- Вход через docker login с токеном:
docker login registry.digitalocean.com
# Введите токен как username и password- Тегирование образа:
docker tag local-image:tag registry.digitalocean.com//image:tag - Push образа:
docker push registry.digitalocean.com//image:tag - Pull образа:
docker pull registry.digitalocean.com//image:tag Безопасность, аудит и GDPR заметки
- API-токены дают доступ в рамках прав, которые им назначены. Храните токены в хранилище секретов CI и выполняйте регулярную ротацию.
- Минимизируйте привилегии токенов: если есть возможность создать токен только для реестра — используйте её.
- В контейнеры не помещайте секреты. Используйте секрет-менеджеры и переменные окружения на этапе запуска.
- Вопросы GDPR: сам по себе реестр хранит образы — если образы содержат персональные данные (например, бэкапы с PII), убедитесь, что у вас есть юридские основания для хранения и обработки, и что доступ ограничен.
Модель зрелости использования реестра
- Уровень 1 — Proof of Concept: бесплатный тариф, 1 репозиторий, ручные push/pull.
- Уровень 2 — Непродакшн: Basic тариф, CI/CD с ручной очисткой мусора, базовый мониторинг.
- Уровень 3 — Продакшн: Professional тариф, автоматизация очистки, интеграция с мониторингом и ротация токенов.
Миграция и совместимость
DigitalOcean Registry совместим с OCI, поэтому перенос образов возможен стандартными инструментами (docker pull/tag/push). При миграции:
- Экспортируйте образы из исходного реестра и импортируйте в DigitalOcean, сохраняя теги.
- Обновите CI/CD и манифесты Kubernetes, чтобы указывать новый registry.digitalocean.com путь.
- Проверьте доступы и токены в среде CI.
Критерии приёмки
- Образы успешно пушатся и пуллятся из реестра.
- CI использует безопасное хранение токенов, без утечек в логах.
- Использование хранилища не превышает планируемых лимитов (или есть план по увеличению баланса).
- План регулярной очистки мусора задокументирован и автоматизирован хотя бы частично.
Заключение
DigitalOcean Container Registry — удобное и простое решение для хранения Docker-образов рядом с инфраструктурой DigitalOcean. Оно упрощает деплой в App Platform и Managed Kubernetes и хорошо подходит для команд, которые уже используют DigitalOcean.
Однако у сервиса есть ограничения: отсутствие встроенных сканеров уязвимостей и автоматических rebuild’ов образов, а также ограничения бесплатного тарифа. Для критически важных задач по безопасности и автоматизации подумайте о внешних инструментах для сканирования и о CI-пайплайнах, которые решают автоматическую проверку образов.
Короткий план действий:
- Создайте реестр и выберите тариф в зависимости от объёма и частоты операций.
- Настройте аутентификацию (doctl / API-токен / config.json).
- Интегрируйте push/pull в CI/CD.
- Настройте политику ротации токенов и план очистки мусора.
Факт-бокс — ключевые цифры
- Бесплатный тариф: 1 репозиторий, 500 МБ хранилища, 500 МБ egress.
- Basic: $5/месяц — 5 репозиториев, 5 ГБ.
- Professional: $20/месяц — неограниченно репозиториев, 100 ГБ.
- Стоимость сверхлимита хранения: $0.02/ГБ.
Похожие материалы
Тёмная тема в Gmail: как включить и улучшить
Как отменить подписки в App Store
Как связаться с Instagram — номера и отчёты
FORMULATEXT в Excel: аудит и проверка формул
Поддержка Gmail: справка, форум и практические советы