0Pricing
DevOps Bootcamp · Урок

Отправка образов в реестры

Настройте рабочие процессы для отправки собранных образов 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, рабочий процесс должен:

  1. Выполнить вход: использовать docker/login-action с именем пользователя Docker Hub и персональным токеном доступа (PAT), сохранённым как секрет GitHub.
  2. Собрать и отправить: использовать 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 — локальная установка не требуется.

Все уроки этого курса

  1. Сборка образов Docker с помощью Actions
  2. Отправка образов в реестры
  3. Развёртывание в Kubernetes с помощью Actions
  4. Чарты Helm и манифесты Kubernetes в CI/CD
← Назад к DevOps Bootcamp