Отправка образов в реестры
Настройте рабочие процессы для отправки собранных образов Docker в реестры контейнеров, такие как Docker Hub или GitHub Container Registry.
«Отправка образов в реестры» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Что такое реестры контейнеров
Реестр контейнеров — это защищённый онлайн-сервис для хранения образов Docker. Представьте его как облачный диск, специально предназначенный для пакетов вашего приложения.
- В них хранятся разные версии образов.
- Они упрощают обмен образами с другими пользователями.
- Они необходимы для развёртывания в различных средах.
Зачем нужны реестры
Реестры необходимы для современной разработки программного обеспечения. Они дают несколько важных преимуществ:
- Распространение образов: простое распространение образов приложения.
- Управление версиями: хранение и управление разными версиями приложения.
- Надёжное развёртывание: обеспечение единообразного развёртывания в разных средах.
- Безопасность: многие реестры предлагают сканирование на наличие уязвимостей.
Распространённые сервисы реестров
Доступно множество сервисов реестров контейнеров. Два популярных сервиса, с которыми вы часто будете сталкиваться:
- Docker Hub: широко используемый общедоступный реестр. Отлично подходит для публикации общедоступных образов и личных проектов.
- GitHub Container Registry (GHCR): тесно интегрирован с репозиториями GitHub. Особенно удобен для закрытых образов и организаций, уже использующих GitHub.
Другие крупные облачные провайдеры также предлагают собственные реестры, например AWS ECR или Google Container Registry.
Аутентификация в реестре
Прежде чем отправить образ в реестр, нужно подтвердить свою личность. Этот процесс называется аутентификацией, или «входом в систему».
Обычно вы указываете имя пользователя и персональный токен доступа (PAT) или пароль. Эти учётные данные гарантируют, что только авторизованные пользователи смогут отправлять образы в частные репозитории или извлекать их оттуда.
Использование docker/login-action
В GitHub Actions лучший способ пройти аутентификацию в большинстве совместимых с Docker реестров — использовать docker/login-action.
Это действие безопасно выполняет вход вашего рабочего процесса в указанный реестр, позволяя последующим шагам отправлять образы. В качестве входных параметров оно принимает username и password.
Отправка в Docker Hub
Чтобы отправить образ в Docker Hub, рабочий процесс должен:
- Выполнить вход: использовать
docker/login-actionс именем пользователя Docker Hub и персональным токеном доступа (PAT), сохранённым как секрет GitHub. - Собрать и отправить: использовать
docker/build-push-actionдля сборки образа и установитьpush: true. Убедиться, что тег образа содержит имя пользователя Docker Hub, напримерyour_username/my-app:latest.
Пример рабочего процесса для Docker Hub
Вот пример рабочего процесса GitHub Actions для сборки и отправки образа Docker в Docker Hub. Не забудьте создать DOCKER_USERNAME и DOCKER_TOKEN как секреты GitHub в своём репозитории.
name: Publish Docker image to Docker Hub
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/my-app:latestОтправка в GHCR
GitHub Container Registry (GHCR) обеспечивает удобную интеграцию. Основные отличия GHCR:
- Аутентификация: для аутентификации можно использовать встроенный
GITHUB_TOKEN. Укажитеusername: ${{ github.actor }}иpassword: ${{ secrets.GITHUB_TOKEN }}. - Разрешения: заданию необходимо разрешение
packages: write. - Назначение тегов образам: образы получают теги в формате
ghcr.io/<OWNER>/<REPOSITORY>:<TAG>.
Пример рабочего процесса для GHCR
Этот рабочий процесс демонстрирует отправку образа в GitHub Container Registry. Обратите внимание на блок permissions и формат тега образа.
name: Publish Docker image to GHCR
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write # Required for GHCR
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latestПроверьте свои знания
Давайте быстро повторим, что Вы узнали об отправке образов в реестры контейнеров.
Повторение: отправка образов!
Отличная работа! Вы научились отправлять образы Docker в реестры контейнеров с помощью GitHub Actions.
- Реестры контейнеров хранят ваши образы Docker и управляют ими.
- Аутентификация с помощью учетных данных — важный первый шаг.
docker/login-actionпомогает безопасно войти в систему.- Вы увидели примеры для Docker Hub и реестра контейнеров GitHub, разобравшись в особенностях их аутентификации и требованиях к тегированию.
Далее Вы узнаете, как развертывать эти образы в Kubernetes!
Часто задаваемые вопросы
Урок «Отправка образов в реестры» бесплатный?
Да — полный текст урока «Отправка образов в реестры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Отправка образов в реестры»?
Настройте рабочие процессы для отправки собранных образов Docker в реестры контейнеров, такие как Docker Hub или GitHub Container Registry. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Отправка образов в реестры»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сборка образов Docker с помощью Actions
- Отправка образов в реестры
- Развёртывание в Kubernetes с помощью Actions
- Чарты Helm и манифесты Kubernetes в CI/CD