Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы используете команды Задачи реестра контейнеров Azure для быстрого создания, отправки и запуска образа контейнера Docker нативно в Azure без локальной установки Docker. Задачи ACR — это набор функций в реестре контейнеров Azure, помогающий управлять и изменять образы контейнеров в течение жизненного цикла контейнера. В этом примере показано, как передать цикл разработки образа контейнера "внутренний цикл" в облако за счет использования сборок по требованию с локальным Dockerfile.
После выполнения этого краткого руководства изучите более сложные функции задач ACR с помощью учебников. Задачи ACR могут автоматизировать сборки образов на основе фиксаций кода или обновлений базового образа, или тестировать несколько контейнеров параллельно, помимо других сценариев.
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Предпосылки
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, подумайте о запуске Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы завершить процесс аутентификации, следуйте шагам, отображаемым в вашем терминале. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Когда вас попросят, установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Создайте группу ресурсов
Если у вас еще нет реестра контейнеров, сначала создайте группу ресурсов с помощью команды az group create . Группа ресурсов Azure — это логический контейнер, в котором развертываются ресурсы Azure и управляют ими.
В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.
az group create --name myResourceGroup --location eastus
Создание реестра контейнеров
Создайте реестр контейнеров с помощью команды az acr create . Имя реестра должно быть уникальным в Azure и содержать 5–50 буквенно-цифровых символов. В следующем примере используется mycontainerregistry008 . Измените это значение на уникальное значение.
az acr create --resource-group myResourceGroup \
--name mycontainerregistry008 --sku Basic
В этом примере создается базовый реестр, представляющий собой оптимизированный по затратам вариант для разработчиков, изучающих Azure Container Registry. Для получения сведений о доступных уровнях обслуживания и их ограничениях и функциях см. раздел Особенности и ограничения SKU реестра контейнеров Azure.
Создание и отправка образа с помощью Dockerfile
Теперь используйте Реестр контейнеров Azure для создания и отправки образа. Сначала создайте локальный рабочий каталог. Затем создайте Dockerfile с именем Dockerfile с одной строкой: FROM mcr.microsoft.com/hello-world Эта строка представляет собой простой пример, который создает образ контейнера Linux из образа, hello-world размещенного в реестре контейнеров Майкрософт. Вы можете создать собственный стандартный файл Dockerfile и создать образы для других платформ. Если вы работаете в оболочке Bash, создайте Dockerfile с помощью следующей команды:
echo "FROM mcr.microsoft.com/hello-world" > Dockerfile
Выполните команду az acr build . Он создает образ и после успешного создания образа отправляет его в реестр. В следующем примере выполняется построение и загрузка образа sample/hello-world:v1. Элемент . в конце команды указывает расположение Dockerfile, в этом случае это текущий каталог.
az acr build --image sample/hello-world:v1 \
--registry mycontainerregistry008 \
--file Dockerfile .
Замечание
Если вы используете реестр источников с поддержкой ABAC, необходимо передать удостоверение вызывающего объекта как удостоверение, используемое build для проверки подлинности в реестре. Передайте удостоверение с помощью флага --source-acr-auth-id [caller] при запуске az acr build.
Дополнительные сведения см. в статье о влиянии включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски.
Выходные данные успешной сборки и отправки аналогичны следующим:
Packing source code into tar to upload...
Uploading archived source code from '/tmp/build_archive_b0bc1e5d361b44f0833xxxx41b78c24e.tar.gz'...
Sending context (1.856 KiB) to registry: mycontainerregistry008...
Queued a build with ID: ca8
Waiting for agent...
2023/03/18 21:56:57 Using acb_vol_4c7ffa31-c862-4be3-xxxx-ab8e615c55c4 as the home volume
2023/03/18 21:56:57 Setting up Docker configuration...
2023/03/18 21:56:58 Successfully set up Docker configuration
2023/03/18 21:56:58 Logging in to registry: mycontainerregistry008.azurecr.io
2023/03/18 21:56:59 Successfully logged into mycontainerregistry008.azurecr.io
2023/03/18 21:56:59 Executing step ID: build. Working directory: '', Network: ''
2023/03/18 21:56:59 Obtaining source code and scanning for dependencies...
2023/03/18 21:57:00 Successfully obtained source code and scanned for dependencies
2023/03/18 21:57:00 Launching container with name: build
Sending build context to Docker daemon 13.82kB
Step 1/1 : FROM mcr.microsoft.com/hello-world
latest: Pulling from hello-world
Digest: sha256:2557e3c07ed1e38f26e389462d03ed943586fxxxx21577a99efb77324b0fe535
Successfully built fce289e99eb9
Successfully tagged mycontainerregistry008.azurecr.io/sample/hello-world:v1
2023/03/18 21:57:01 Successfully executed container: build
2023/03/18 21:57:01 Executing step ID: push. Working directory: '', Network: ''
2023/03/18 21:57:01 Pushing image: mycontainerregistry008.azurecr.io/sample/hello-world:v1, attempt 1
The push refers to repository [mycontainerregistry008.azurecr.io/sample/hello-world]
af0b15c8625b: Preparing
af0b15c8625b: Layer already exists
v1: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
2023/03/18 21:57:03 Successfully pushed image: mycontainerregistry008.azurecr.io/sample/hello-world:v1
2023/03/18 21:57:03 Step ID: build marked as successful (elapsed time in seconds: 2.543040)
2023/03/18 21:57:03 Populating digests for step ID: build...
2023/03/18 21:57:05 Successfully populated digests for step ID: build
2023/03/18 21:57:05 Step ID: push marked as successful (elapsed time in seconds: 1.473581)
2023/03/18 21:57:05 The following dependencies were found:
2023/03/18 21:57:05
- image:
registry: mycontainerregistry008.azurecr.io
repository: sample/hello-world
tag: v1
digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a
runtime-dependency:
registry: registry.hub.docker.com
repository: library/hello-world
tag: v1
digest: sha256:2557e3c07ed1e38f26e389462d03ed943586f744621577a99efb77324b0fe535
git: {}
Run ID: ca8 was successful after 10s
Запуск образа
Теперь запустите созданный образ и отправьте его в реестр. Используйте az acr run для выполнения команды контейнера. В рабочем процессе разработки контейнеров этот шаг может быть шагом проверки перед развертыванием образа или включить команду в многофакторный YAML-файл.
В следующем примере используется $Registry для указания конечной точки реестра, в которой выполняется команда:
az acr run --registry mycontainerregistry008 \
--cmd '$Registry/sample/hello-world:v1' /dev/null
Замечание
Если вы используете реестр источников с поддержкой ABAC, необходимо передать идентификационные данные вызывающего как идентификацию, которую команда run использует для аутентификации в реестре. Укажите идентификацию с помощью флага --source-acr-auth-id [caller] при запуске az acr run.
Дополнительные сведения см. в статье о влиянии включения ABAC на задачи ACR, быстрые задачи, быстрые сборки и быстрые запуски.
Параметр cmd в этом примере запускает контейнер в конфигурации по умолчанию, но cmd поддерживает дополнительные docker run параметры или даже другие docker команды.
Выходные данные похожи на следующие:
Packing source code into tar to upload...
Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'...
Sending context (1.855 KiB) to registry: mycontainerre...
Queued a run with ID: cab
Waiting for an agent...
2023/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume
2023/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge'
2023/03/19 19:01:53 Successfully set up Docker network: acb_default_network
2023/03/19 19:01:53 Setting up Docker configuration...
2023/03/19 19:01:54 Successfully set up Docker configuration
2023/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io
2023/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io
2023/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network'
2023/03/19 19:01:55 Launching container with name: acb_step_0
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
2023/03/19 19:01:56 Successfully executed container: acb_step_0
2023/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801)
Run ID: cab was successful after 6s
Очистите ресурсы
Если ресурсы больше не нужны, используйте команду az group delete , чтобы удалить группу ресурсов, реестр контейнеров и образы контейнеров, хранящиеся в реестре.
az group delete --name myResourceGroup
Дальнейшие шаги
В этом кратком руководстве вы использовали функции задач ACR для быстрой сборки, отправки и запуска образа Docker-контейнера непосредственно в Azure без локальной установки Docker. Сведения об использовании задач ACR для автоматизации сборок и обновлений образов см. в руководствах по задачам реестра контейнеров Azure.