Skip to main content

Работа с реестром Docker

Вы можете отправлять и извлекать образы Docker с помощью реестра Docker для GitHub Packages.

Note

Этот тип пакета может быть недоступен для вашего экземпляра, так как администраторы сайта могут включить или отключить каждый поддерживаемый тип пакета. Дополнительные сведения см. в разделе Настройка поддержки экосистемы пакетов для предприятия.

Сведения о поддержке Docker

При установке или публикации образа Docker реестр Docker в настоящее время не поддерживает внешние слои, такие как образы Windows.

Подсистема Docker версии 25 несовместима с реестром Docker на GitHub Enterprise Server. Вместо этого рекомендуется использовать Container registry. Сведения о миграции см. в разделе Миграция в реестр контейнеров из реестра Docker.

Проверка подлинности в GitHub Packages

Note

GitHub Packages поддерживает проверку подлинности только с помощью personal access token (classic). Дополнительные сведения см. в разделе Управление личными маркерами доступа.

Для публикации, установки и удаления частных, внутренних и общедоступных пакетов требуется маркер доступа.

Можно использовать personal access token (classic) для проверки подлинности в API GitHub Packages или API GitHub . При создании personal access token (classic)можно назначить маркер различным областям в зависимости от ваших потребностей. Дополнительные сведения о областях, связанных с пакетами, для personal access token (classic), см. в разделе Сведения о разрешениях для пакетов GitHub.

Для проверки подлинности в реестре GitHub Packages в рабочем процессе GitHub Actions можно использовать следующее:

  • GITHUB_TOKEN для публикации пакетов, связанных с репозиторием рабочих процессов.
  • personal access token (classic) с по крайней мере read:packages областью действия для установки пакетов, связанных с другими частными репозиториями (GITHUB_TOKEN можно использовать, если репозиторий предоставлен доступ на чтение к пакету. См . раздел AUTOTITLE.

Дополнительные сведения об GITHUB_TOKEN использовании в рабочих процессах GitHub Actions см. в разделе Автоматическая проверка подлинности токенов.

Проверка подлинности с помощью personal access token

Необходимо использовать personal access token (classic) с соответствующими областями для публикации и установки пакетов в GitHub Packages. Дополнительные сведения см. в разделе Введение в GitHub Packages.

Вы можете пройти проверку подлинности GitHub Packages с помощью Docker, используя команду входа docker.

Чтобы обеспечить безопасность учетных данных, рекомендуется сохранить данные personal access token в локальном файле на компьютере и использовать флаг Docker --password-stdin , который считывает маркер из локального файла.

Если у экземпляра включена изоляция поддомена:

cat ~/TOKEN.txt | docker login docker.HOSTNAME -u USERNAME --password-stdin

Если у экземпляра отключена изоляция поддомена:

cat ~/TOKEN.txt | docker login HOSTNAME -u USERNAME --password-stdin

Чтобы использовать эту команду входа, замените USERNAME имя пользователя HOSTNAME GitHub URL-адресом для ваш экземпляр GitHub Enterprise Server, а ~/TOKEN.txt путь к файлу к personal access token для GitHub.

Дополнительные сведения см. в разделе "Имя входа Docker".

Публикация изображения

Note

Реестр Docker GitHub Packages реестра Docker будет заменен в будущем выпуске GitHub Enterprise Server с помощью Container registry, который предлагает улучшенную поддержку контейнеров.

Note

Имена изображений должны использовать только строчные буквы.

GitHub Packages поддерживает несколько образов Docker верхнего уровня для каждого репозитория. Репозиторий может содержать любое количество тегов изображений. Вы можете столкнуться со снижением производительности при публикации или установке образов Docker размером более 10 ГБ (слои будут ограничены 5 ГБ каждый). Дополнительные сведения см . в теге Docker в документации по Docker.

После публикации пакет можно просмотреть здесь: GitHub. Дополнительные сведения см. в разделе Просмотр пакетов.

  1. Определите имя и идентификатор образа Docker с помощью docker images.

    $ docker images
    > <&nbsp>
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
    
  2. С помощью идентификатора образа Docker пометьте образ Docker, заменив OWNER именем личная учетная запись или организации, которая владеет репозиторием, репозиторием с именем репозитория, содержащего проект, IMAGE_NAME именем пакета или образа, HOSTNAME именем узла ваш экземпляр GitHub Enterprise Server, а версия с версией пакета во время сборки.

    Если у экземпляра включена изоляция поддомена:

    docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
    

    Если у экземпляра отключена изоляция поддомена:

    docker tag IMAGE_ID HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
    
  3. Если вы еще не создали образ Docker для пакета, создайте образ, заменив OWNER именем личная учетная запись или организации, которая владеет репозиторием, репозиторий с именем репозитория, который содержит проект, IMAGE_NAME именем пакета или образа, VERSION версией пакета во время сборки, HOSTNAME с именем узла ваш экземпляр GitHub Enterprise Server, и ПУТЬ к изображению, если он не находится в текущем рабочем каталоге.

    Если у экземпляра включена изоляция поддомена:

    docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
    

    Если у экземпляра отключена изоляция поддомена:

    docker build -t HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
    
  4. Опубликуйте изображение в GitHub Packages.

    Если у экземпляра включена изоляция поддомена:

    docker push docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
    

    Если у экземпляра отключена изоляция поддомена:

    docker push HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
    

    Note

    Необходимо отправить образ с помощью IMAGE_NAME:VERSION и не использовать IMAGE_NAME:SHA.

Пример публикации образа Docker

В этих примерах предполагается, что у экземпляра включена изоляция поддомена.

Вы можете опубликовать образ monalisa версии 1.0 в репозитории octocat/octo-app с помощью идентификатора образа.

$ docker images

> REPOSITORY           TAG      IMAGE ID      CREATED      SIZE
> monalisa             1.0      c75bebcdd211  4 weeks ago  1.11MB

# Tag the image with OWNER/REPO/IMAGE_NAME
$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

Вы можете опубликовать новый образ Docker в первый раз и присвоить ему имя monalisa.

# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
# Assumes Dockerfile resides in the current working directory (.)
$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 .

# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0

Скачивание изображения

Note

Реестр Docker GitHub Packages реестра Docker будет заменен в будущем выпуске GitHub Enterprise Server с помощью Container registry, который предлагает улучшенную поддержку контейнеров.

Вы можете использовать docker pull команду для установки образа Docker из GitHub Packages, заменив OWNER именем личная учетная запись или организации, которая владеет репозиторием, репозиторием с именем репозитория, содержащего проект, IMAGE_NAME именем пакета или образа, HOSTNAME с именем узла ваш экземпляр GitHub Enterprise Server, и TAG_NAME с тегом для изображения. хотите установить.

Если у экземпляра включена изоляция поддомена:

docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

Если у экземпляра отключена изоляция поддомена:

docker pull HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

Note

Необходимо извлечь изображение, используя IMAGE_NAME:VERSION и не используя IMAGE_NAME:SHAего.

Дополнительные материалы