Nasazení ze služby Azure Container Registry do služby Azure Container Instances
Azure Container Registry je spravovaná služba registru kontejnerů založená na Azure, která slouží k ukládání privátních imagí kontejneru Docker. Tento článek popisuje, jak načítat image kontejneru uložené v Azure Container Registry při nasazení do Azure Container Instances. doporučeným způsobem, jak nakonfigurovat přístup k registru, je vytvořit Azure Active Directory instanční objekt a heslo a přihlašovací údaje uložit v trezoru klíčů Azure.
Požadavky
Azure Container Registry: potřebujete službu Azure Container Registry, a alespoň jednu Image kontejneru v registru, abyste mohli dokončit kroky v tomto článku. Pokud potřebujete registr, přečtěte si téma Vytvoření registru kontejnerů pomocí Azure CLI.
Azure CLI: Příklady příkazového řádku v tomto článku používají Azure CLI a jsou naformátované pro prostředí bash. Azure CLI můžete nainstalovat místně nebo použít Azure Cloud Shell.
Omezení
- Pomocí spravované identity nakonfigurované ve stejné skupině kontejnerů se nemůžete ověřit, aby se při nasazení skupiny kontejnerů načetly image Azure Container Registry.
- V tuto chvíli nemůžete načítat image z Azure Container Registry nasazených do Azure Virtual Network.
Konfigurace ověřování registru
V produkčním scénáři, kdy poskytujete přístup k "bezobslužným" službám a aplikacím, se doporučuje nakonfigurovat přístup k registru pomocí instančního objektu. Instanční objekt umožňuje poskytnout vašim imagím kontejneru řízení přístupu na základě role Azure (Azure RBAC) . Můžete například nakonfigurovat instanční objekt s přístupem k registru pouze ke čtení.
Azure Container Registry poskytuje další Možnosti ověřování.
V následující části vytvoříte Trezor klíčů Azure a instanční objekt a uložíte přihlašovací údaje instančního objektu do trezoru.
Vytvoření trezoru klíčů
Pokud ještě nemáte trezor ve službě Azure Key Vault, vytvořte si ho v Azure CLI pomocí následujících příkazů.
Aktualizujte RES_GROUP proměnnou názvem existující skupiny prostředků, ve které chcete vytvořit Trezor klíčů, a ACR_NAME názvem vašeho registru kontejneru. V případě zkrácení se v příkazech v tomto článku předpokládají, že jsou všechny služby registru, trezoru klíčů a instance kontejnerů vytvořené ve stejné skupině prostředků.
Zadejte název nového trezoru klíčů v AKV_NAME . Název trezoru musí být v rámci Azure jedinečný a musí mít 3-24 alfanumerických znaků, začínat písmenem, končit písmenem nebo číslicí a nesmí obsahovat po sobě jdoucí spojovníky.
RES_GROUP=myresourcegroup # Resource Group name
ACR_NAME=myregistry # Azure Container Registry registry name
AKV_NAME=mykeyvault # Azure Key Vault vault name
az keyvault create -g $RES_GROUP -n $AKV_NAME
Vytvoření instančního objektu a uložení přihlašovacích údajů
Teď vytvořte instanční objekt a uložte jeho přihlašovací údaje do trezoru klíčů.
Následující příkazy používají příkaz AZ AD SP Create-for-RBAC k vytvoření instančního objektu a k uložení hesla instančního objektu do trezoru pomocí příkazu AZ Service tajná sada klíčů . Nezapomeňte si poznamenat appId při vytváření instančního objektu.
# Create service principal
az ad sp create-for-rbac \
--name http://$ACR_NAME-pull \
--scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
--role acrpull
SP_ID=xxxx # Replace with your service principal's appId
# Store the registry *password* in the vault
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-pwd \
--value $(az ad sp show --id $SP_ID --query password --output tsv)
--roleArgument v předchozím příkazu nakonfiguruje instanční objekt pomocí role acrpull , která uděluje přístup pouze pro získání přístupu k registru. Chcete-li udělit přístup push i Pull, změňte --role argument na acrpush.
Dále do trezoru uložte identifikátor appId objektu služby, což je uživatelské jméno , které jste předali Azure Container Registry k ověřování.
# Store service principal ID in vault (the registry *username*)
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-usr \
--value $(az ad sp show --id $SP_ID --query appId --output tsv)
Vytvořili jste trezor klíčů Azure a uložili jste do něj dva tajné kódy:
$ACR_NAME-pull-usr: ID instančního objektu, které se bude používat jako uživatelské jméno registru kontejneru.$ACR_NAME-pull-pwd: heslo instančního objektu, které se bude používat jako heslo registru kontejneru.
Teď můžete na tyto tajné kódy odkazovat názvem, když vy nebo vaše aplikace a služby budou načítat image z tohoto registru.
Nasazení kontejneru pomocí Azure CLI
Teď, když jsou přihlašovací údaje instančního objektu uložené v Azure Key Vault tajných klíčích, můžou vaše aplikace a služby používat k přístupu k privátnímu registru.
Nejprve pomocí příkazu AZ ACR show načtěte název přihlašovacího serveru registru. Název přihlašovacího serveru je malými písmeny a podobně jako myregistry.azurecr.io .
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)
Spuštěním následujícího příkazu az container create nasaďte instanci kontejneru. Příkaz používá přihlašovací údaje instančního objektu uložené v Azure Key Vault k ověření ve vašem registru kontejneru a předpokládá, že jste do svého registru dřív posunuli image ACI-Hello . Aktualizujte --image hodnotu, pokud chcete použít jiný obrázek z registru.
az container create \
--name aci-demo \
--resource-group $RES_GROUP \
--image $ACR_LOGIN_SERVER/aci-helloworld:v1 \
--registry-login-server $ACR_LOGIN_SERVER \
--registry-username $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-usr --query value -o tsv) \
--registry-password $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-pwd --query value -o tsv) \
--dns-name-label aci-demo-$RANDOM \
--query ipAddress.fqdn
--dns-name-labelHodnota musí být v rámci Azure jedinečná, takže předchozí příkaz připojí náhodné číslo k popisku názvu DNS kontejneru. Výstup příkazu zobrazí plně kvalifikovaný název domény kontejneru, například:
"aci-demo-25007.eastus.azurecontainer.io"
Po úspěšném spuštění kontejneru můžete v prohlížeči přejít na jeho plně kvalifikovaný název domény a ověřit, jestli je aplikace spuštěná úspěšně.
Nasazení pomocí šablony Azure Resource Manager
Vlastnosti služby Azure Container Registry můžete zadat v šabloně Azure Resource Manager zahrnutím imageRegistryCredentials vlastnosti do definice skupiny kontejnerů. Můžete například zadat přihlašovací údaje registru přímo:
[...]
"imageRegistryCredentials": [
{
"server": "imageRegistryLoginServer",
"username": "imageRegistryUsername",
"password": "imageRegistryPassword"
}
]
[...]
Kompletní nastavení skupiny kontejnerů najdete v referenčních informacích k šabloně správce prostředků.
Podrobnosti o odkazování Azure Key Vault tajných kódů v šabloně Správce prostředků najdete v tématu použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.
Nasazení pomocí Azure Portal
Pokud udržujete image kontejnerů ve službě Azure Container Registry, můžete kontejner snadno vytvořit v Azure Container Instances pomocí Azure Portal. Při použití portálu k nasazení instance kontejneru z registru kontejneru je nutné povolit účet správceregistru. Účet správce je navržený pro jednoho uživatele, který má přístup k registru, hlavně pro účely testování.
V Azure Portal přejděte do registru kontejneru.
Pokud chcete potvrdit, že je účet správce povolený, vyberte přístupové klíče a v části uživatel s oprávněními vyberte Povolit.
Vyberte úložiště a pak vyberte úložiště, ze kterého chcete nasadit, klikněte pravým tlačítkem na značku pro Image kontejneru, kterou chcete nasadit, a vyberte spustit instanci.

Zadejte název kontejneru a název skupiny prostředků. V případě potřeby můžete také změnit výchozí hodnoty.

Po dokončení nasazení můžete přejít do skupiny kontejnerů z podokna oznámení a vyhledat jeho IP adresu a další vlastnosti.

Další kroky
Další informace o ověřování Azure Container Registry najdete v tématu ověřování pomocí služby Azure Container Registry.