Отправка и извлечение артефакта OCI с помощью реестра контейнеров AzurePush and pull an OCI artifact using an Azure container registry

Вы можете использовать реестр контейнеров Azure для хранения артефактов и управления ими (OCI) , а также для образов контейнеров, совместимых с DOCKER и DOCKER.You can use an Azure container registry to store and manage Open Container Initiative (OCI) artifacts as well as Docker and Docker-compatible container images.

Чтобы продемонстрировать эту возможность, в этой статье показано, как использовать средство реестра OCI как хранилище (Орас) для отправки примера артефакта — текстового файла в реестр контейнеров Azure.To demonstrate this capability, this article shows how to use the OCI Registry as Storage (ORAS) tool to push a sample artifact - a text file - to an Azure container registry. Затем извлекать артефакт из реестра.Then, pull the artifact from the registry. Вы можете управлять множеством артефактов OCI в реестре контейнеров Azure, используя различные программы командной строки, подходящие для каждого артефакта.You can manage a variety of OCI artifacts in an Azure container registry using different command-line tools appropriate to each artifact.

Предварительные требованияPrerequisites

  • Реестр контейнеров Azure. Создайте реестр контейнеров в своей подписке Azure.Azure container registry - Create a container registry in your Azure subscription. Это можно сделать на портале Azure или с помощью Azure CLI.For example, use the Azure portal or the Azure CLI.
  • Средство Орас . Скачайте и установите текущий выпуск Орас для вашей операционной системы из репозитория GitHub.ORAS tool - Download and install a current ORAS release for your operating system from the GitHub repo. Средство выпускается как сжатый tarball (файл.tar.gz).The tool is released as a compressed tarball (.tar.gz file). Извлеките и установите файл, используя стандартные процедуры для вашей операционной системы.Extract and install the file using standard procedures for your operating system.
  • Azure Active Directory субъекта-службы (необязательно) . для проверки подлинности непосредственно с помощью Орас создайте субъект-службу для доступа к реестру.Azure Active Directory service principal (optional) - To authenticate directly with ORAS, create a service principal to access your registry. Убедитесь, что субъекту-службе назначена роль, например Акрпуш, чтобы она обладала разрешениями на принудительную отправку и извлечение артефактов.Ensure that the service principal is assigned a role such as AcrPush so that it has permissions to push and pull artifacts.
  • Azure CLI (необязательно) . чтобы использовать индивидуальное удостоверение, требуется локальная установка Azure CLI.Azure CLI (optional) - To use an individual identity, you need a local installation of the Azure CLI. Рекомендуется использовать версию 2.0.71 или более позднюю.Version 2.0.71 or later is recommended. Запустите az --version, чтобы найти версию.Run az --versionto find the version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.If you need to install or upgrade, see Install Azure CLI.
  • DOCKER (необязательно) . чтобы использовать индивидуальное удостоверение, необходимо также установить DOCKER на локальном компьютере для проверки подлинности в реестре.Docker (optional) - To use an individual identity, you must also have Docker installed locally, to authenticate with the registry. Docker предоставляет пакеты, которые позволяют быстро настроить Docker в системе под управлением macOS, Windows или Linux.Docker provides packages that easily configure Docker on any macOS, Windows, or Linux system.

Вход в реестрSign in to a registry

В этом разделе показаны два предлагаемых рабочего процесса для входа в реестр в зависимости от используемого удостоверения.This section shows two suggested workflows to sign into the registry, depending on the identity used. Выберите метод, подходящий для вашей среды.Choose the method appropriate for your environment.

Вход с помощью ОрасSign in with ORAS

Используя субъект-службу с правами Push, выполните команду oras login, чтобы войти в реестр с помощью идентификатора и пароля приложения субъекта-службы.Using a service principal with push rights, run the oras login command to sign in to the registry using the service principal application ID and password. Укажите полное имя реестра (все строчные), в данном случае myregistry.azurecr.IO.Specify the fully qualified registry name (all lowercase), in this case myregistry.azurecr.io. Идентификатор приложения субъекта-службы передается в переменной среды $SP_APP_IDи пароль в переменной $SP_PASSWD.The service principal application ID is passed in the environment variable $SP_APP_ID, and the password in the variable $SP_PASSWD.

oras login myregistry.azurecr.io --username $SP_APP_ID --password $SP_PASSWD

Чтобы прочитать пароль из stdin, используйте --password-stdin.To read the password from Stdin, use --password-stdin.

Вход с помощью Azure CLISign in with Azure CLI

Войдите в Azure CLI с помощью удостоверения, чтобы отправить артефакты из реестра контейнеров и извлечь их из него.Sign in to the Azure CLI with your identity to push and pull artifacts from the container registry.

Затем используйте команду Azure CLI AZ контроля учетных записей для доступа к реестру.Then, use the Azure CLI command az acr login to access the registry. Например, для проверки подлинности в реестре с именем myregistry:For example, to authenticate to a registry named myregistry:

az login
az acr login --name myregistry

Примечание

az acr login использует клиент DOCKER для установки токена Azure Active Directory в docker.config файле.az acr login uses the Docker client to set an Azure Active Directory token in the docker.config file. Для выполнения отдельного потока проверки подлинности необходимо установить и запустить клиент DOCKER.The Docker client must be installed and running to complete the individual authentication flow.

Отправка артефактаPush an artifact

Создайте текстовый файл в локальном рабочем каталоге с примером текста.Create a text file in a local working working directory with some sample text. Например, в оболочке bash:For example, in a bash shell:

echo "Here is an artifact!" > artifact.txt

Используйте команду oras push, чтобы отправить этот текстовый файл в реестр.Use the oras push command to push this text file to your registry. В следующем примере текстовый файл отправляется в репозиторий samples/artifact.The following example pushes the sample text file to the samples/artifact repo. Реестр определен с полным именем реестра myregistry.azurecr.IO (все строчные буквы).The registry is identified with the fully qualified registry name myregistry.azurecr.io (all lowercase). Артефакт помечается как 1.0.The artifact is tagged 1.0. По умолчанию артефакт имеет неопределенный тип, который определяется строкой типа носителя после имени файла artifact.txt.The artifact has an undefined type, by default, identified by the media type string following the filename artifact.txt. Дополнительные типы см. в статье о артефактах OCI .See OCI Artifacts for additional types.

LinuxLinux

oras push myregistry.azurecr.io/samples/artifact:1.0 \
    --manifest-config /dev/null:application/vnd.unknown.config.v1+json \
    ./artifact.txt:application/vnd.unknown.layer.v1+txt

WindowsWindows

.\oras.exe push myregistry.azurecr.io/samples/artifact:1.0 ^
    --manifest-config NUL:application/vnd.unknown.config.v1+json ^
    .\artifact.txt:application/vnd.unknown.layer.v1+txt

Выходные данные для успешной отправки push-уведомлений похожи на следующие:Output for a successful push is similar to the following:

Uploading 33998889555f artifact.txt
Pushed myregistry.azurecr.io/samples/artifact:1.0
Digest: sha256:xxxxxxbc912ef63e69136f05f1078dbf8d00960a79ee73c210eb2a5f65xxxxxx

Для управления артефактами в реестре, если вы используете Azure CLI, выполните стандартные az acr команды для управления образами.To manage artifacts in your registry, if you are using the Azure CLI, run standard az acr commands for managing images. Например, получите атрибуты артефакта с помощью команды AZ запись в репозитории :For example, get the attributes of the artifact using the az acr repository show command:

az acr repository show \
    --name myregistry \
    --image samples/artifact:1.0

Результат аналогичен приведенному ниже:Output is similar to the following:

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": true
  },
  "createdTime": "2019-08-28T20:43:31.0001687Z",
  "digest": "sha256:xxxxxxbc912ef63e69136f05f1078dbf8d00960a79ee73c210eb2a5f65xxxxxx",
  "lastUpdateTime": "2019-08-28T20:43:31.0001687Z",
  "name": "1.0",
  "signed": false
}

Извлечение артефактаPull an artifact

Выполните команду oras pull, чтобы извлечь артефакт из реестра.Run the oras pull command to pull the artifact from your registry.

Сначала удалите текстовый файл из локального рабочего каталога:First remove the text file from your local working directory:

rm artifact.txt

Запустите oras pull, чтобы извлечь артефакт, и укажите тип носителя, используемый для принудительной отправки артефакта:Run oras pull to pull the artifact, and specify the media type used to push the artifact:

oras pull myregistry.azurecr.io/samples/artifact:1.0 \
    --media-type application/vnd.unknown.layer.v1+txt

Убедитесь, что извлечение прошло успешно:Verify that the pull was successful:

$ cat artifact.txt
Here is an artifact!

Удалить артефакт (необязательно)Remove the artifact (optional)

Чтобы удалить артефакт из реестра контейнеров Azure, используйте команду AZ запись в репозиторий удаления .To remove the artifact from your Azure container registry, use the az acr repository delete command. Следующий пример удаляет артефакт, который вы сохранили:The following example removes the artifact you stored there:

az acr repository delete \
    --name myregistry \
    --image samples/artifact:1.0

Следующие шагиNext steps

  • Дополнительные сведения о библиотеке Орас, включая настройку манифеста для артефактаLearn more about the ORAS Library, including how to configure a manifest for an artifact
  • Справочные сведения о новых типах артефактов см. в репозитории артефактов OCI .Visit the OCI Artifacts repo for reference information about new artifact types