如何从www.example.com自动化docker pullazurecr.io?

jyztefdp  于 2023-05-22  发布在  Docker
关注(0)|答案(1)|浏览(154)

我目前在一个工作站上工作,需要运行azurecr上托管的给定docker容器的最新版本。我手动做的是:

  1. az登录,这使我使用Web浏览器进行身份验证
  2. Docker pull my_registry.azurecr.io/my_image:latest
  3. docker run...我的_registry.azurecr.io/my_image:latest
    我可以通过cron或任何docker拉取和docker运行的东西(步骤2和3)自动化,但我无法自动化步骤1。你知道有什么方法可以做到这一点吗?谢谢!
wwtsj6pe

wwtsj6pe1#

您可以:

  • 创建服务主体
# Create a service principal with required parameter
az ad sp create-for-rbac --scopes /subscriptions/mySubscriptionID
  • 为注册表
#!/bin/bash
# Modify for your environment. The ACR_NAME is the name of your Azure Container
# Registry, and the SERVICE_PRINCIPAL_ID is the service principal's 'appId' or
# one of its 'servicePrincipalNames' values.
ACR_NAME=$containerRegistry
SERVICE_PRINCIPAL_ID=$servicePrincipal

# Populate value required for subsequent command args
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)

# Assign the desired role to the service principal. Modify the '--role' argument
# value as desired:
# acrpull:     pull only
# acrpush:     push and pull
# owner:       push, pull, and assign roles
az role assignment create --assignee $SERVICE_PRINCIPAL_ID --scope 
$ACR_REGISTRY_ID --role acrpull

添加此主体的ACR Pull权限

  • 然后使用此主体登录
az login --service-principal -u <app-id> -p <password-or-cert> --tenant <tenant>

通过这种方式,您可以避免交互式登录,并且应该能够在cron中运行它。

相关问题