Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Virtual Network poskytuje zabezpečené privátní sítě pro vaše prostředky Azure a místní prostředky. Pomocí koncového bodu služby můžete omezit veřejnou IP adresu registru kontejneru na vaši virtuální síť. Tento koncový bod poskytuje optimální trasu k prostředku přes páteřní síť Azure. Identity virtuální sítě a podsítě se také přenášejí s každou žádostí.
Tento článek ukazuje, jak nakonfigurovat koncový bod služby registru kontejneru (Preview) ve virtuální síti.
Důležité
Azure Container Registry teď podporuje Službu Azure Private Link, která umožňuje umístění privátních koncových bodů z virtuální sítě do registru. Ve většině síťových scénářů doporučujeme místo koncových bodů služby používat privátní koncové body. Privátní koncové body jsou přístupné z virtuální sítě pomocí privátních IP adres. Registr kontejnerů nepodporuje povolení funkcí privátního propojení i koncového bodu služby nakonfigurovaných z virtuální sítě. Spusťte seznam a podle potřeby odeberte pravidla sítě.
Konfigurace koncového bodu služby registru je k dispozici ve vrstvě služby Registru kontejneru Premium . Informace o úrovních a omezeních služby registru najdete v tématu Funkce a omezení skladové položky kontejneru Azure. Každý registr Premium podporuje maximálně 100 pravidel virtuální sítě.
Omezení verze Preview
Při používání koncových bodů služby za účelem omezení přístupu k registru kontejneru mějte na paměti následující aktuální omezení:
- Ke konfiguraci koncových bodů služby v registru nemůžete použít Azure Portal.
- Jako hostitele pro přístup k registru kontejneru pomocí koncového bodu služby je možné použít pouze cluster Azure Kubernetes Service nebo virtuální počítač Azure. Jiné služby Azure, včetně služby Azure Container Instances, se nepodporují.
- Koncové body služeb pro Azure Container Registry se nepodporují v cloudu Azure US Government ani v Microsoft Azure provozovaném cloudem 21Vianet.
Důležité
Pokud registr kontejneru omezuje přístup k privátním koncovým bodům, vybraným podsítím nebo IP adresám, nemusí být některé funkce dostupné nebo vyžadují více konfigurace.
- Když zakážete přístup k registru veřejné sítě, budou mít určité důvěryhodné služby, včetně programu Microsoft Defender for Cloud, přístup k registru pouze v případě, že povolíte nastavení sítě, aby se pravidla sítě obešla.
- Jakmile zakážete přístup k veřejné síti, instance některých služeb Azure, včetně Azure DevOps Services, nemají přístup k registru kontejneru.
- Privátní koncové body se v současné době nepodporují u agentů spravovaných Azure DevOps. K privátnímu koncovému bodu potřebujete použít agenta v místním prostředí s dohledem sítě.
- Pokud má registr schválený privátní koncový bod a zakážete přístup k veřejné síti, nemůžete vypsat úložiště a značky mimo virtuální síť pomocí webu Azure Portal, Azure CLI nebo jiných nástrojů.
Požadavky
Pokud chcete použít kroky Azure CLI v tomto článku, potřebujete Azure CLI verze 2.0.58 nebo novější. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Pokud ještě nemáte registr kontejneru, vytvořte jeden (vyžaduje se úroveň Premium) a nahrajte ukázkový obraz, například
hello-world, z Docker Hubu. Pomocí webu Azure Portal nebo Azure CLI můžete například vytvořit registr.Pokud chcete omezit přístup k registru pomocí koncového bodu služby v jiném předplatném Azure, zaregistrujte poskytovatele prostředků pro Azure Container Registry v daném předplatném. Příklad:
az account set --subscription <Name or ID of subscription of virtual network> az provider register --namespace Microsoft.ContainerRegistry
Vytvoření virtuálního počítače s podporou Dockeru
Pro účely testování použijte virtuální počítač s Ubuntu s podporou Dockeru pro přístup k registru kontejneru Azure. Pokud chcete pro registr použít ověřování Microsoft Entra, nainstalujte na virtuální počítač také Azure CLI . Pokud už máte virtuální počítač Azure, přeskočte tento krok vytvoření.
Stejnou skupinu prostředků můžete použít pro virtuální počítač a registr kontejneru. Toto nastavení zjednodušuje vyčištění na konci, ale nevyžaduje se. Pokud pro virtuální počítač a virtuální síť vytvoříte samostatnou skupinu prostředků, spusťte příkaz az group create. Následující příklad předpokládá, že jste nastavili proměnné prostředí pro název skupiny prostředků a umístění registru:
az group create --name $RESOURCE_GROUP --location $REGISTRY_LOCATION
Teď nasaďte výchozí virtuální počítač Ubuntu Azure pomocí příkazu az vm create. Následující příklad vytvoří virtuální počítač myDockerVM:
VM_NAME=myDockerVM
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Vytvoření virtuálního počítače trvá několik minut. Po dokončení příkazu si poznamenejte publicIpAddress výstup zobrazený Azure CLI. Tuto adresu použijte k vytvoření připojení SSH k virtuálnímu počítači.
Instalace Dockeru na virtuální počítač
Po spuštění virtuálního počítače vytvořte připojení SSH k virtuálnímu počítači. Nahraďte publicIpAddress veřejnou IP adresou vašeho virtuálního počítače.
ssh azureuser@publicIpAddress
Spuštěním následujících příkazů nainstalujte Docker na virtuální počítač s Ubuntu:
sudo apt-get update
sudo apt install docker.io -y
Po instalaci spusťte následující příkaz a ověřte, že je na virtuálním počítači správně spuštěný Docker:
sudo docker run -it hello-world
Měl by se zobrazit výstup potvrzující, že instalace vypadá správně.
Nainstalujte Azure CLI
Postupujte podle kroků v tématu Instalace Azure CLI s apt pro instalaci Azure CLI na virtuální počítač s Ubuntu. Příklad:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Ukončete připojení SSH.
Konfigurace síťového přístupu pro registr
Pomocí těchto kroků nakonfigurujte registr kontejneru tak, aby umožňoval přístup z podsítě ve virtuální síti Azure pomocí Azure CLI.
Přidání koncového bodu služby do podsítě
Když vytvoříte virtuální počítač, Azure ve výchozím nastavení vytvoří virtuální síť ve stejné skupině prostředků. Název virtuální sítě je založený na názvu virtuálního počítače. Pokud například pojmenujete virtuální počítač myDockerVM, výchozí název virtuální sítě je myDockerVMVNET s podsítí s názvem myDockerVMSubnet. Pomocí příkazu az network vnet list ověřte tuto konfiguraci:
az network vnet list \
--resource-group myResourceGroup \
--query "[].{Name: name, Subnet: subnets[0].name}"
Výstup:
[
{
"Name": "myDockerVMVNET",
"Subnet": "myDockerVMSubnet"
}
]
Pomocí příkazu az network vnet subnet update přidejte do podsítě koncový bod služby Microsoft.ContainerRegistry. Názvy virtuální sítě a podsítě nahraďte následujícím příkazem:
az network vnet subnet update \
--name myDockerVMSubnet \
--vnet-name myDockerVMVNET \
--resource-group myResourceGroup \
--service-endpoints Microsoft.ContainerRegistry
Pomocí příkazu az network vnet subnet show získáte ID prostředku podsítě. Toto ID potřebujete ke konfiguraci pravidla síťového přístupu.
az network vnet subnet show \
--name myDockerVMSubnet \
--vnet-name myDockerVMVNET \
--resource-group myResourceGroup \
--query "id"
--output tsv
Výstup:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myDockerVMVNET/subnets/myDockerVMSubnet
Změna výchozího síťového přístupu k registru
Registr kontejnerů Azure ve výchozím nastavení umožňuje připojení z hostitelů v jakékoli síti. Pokud chcete omezit přístup k vybrané síti, změňte výchozí akci tak, aby odepřela přístup. Nahraďte název registru v následujícím příkazu az acr update :
az acr update --name myContainerRegistry --default-action Deny
Přidání pravidla sítě do registru
Pomocí příkazu az acr network-rule add přidejte do registru pravidlo sítě, které umožňuje přístup z podsítě virtuálního počítače. V následujícím příkazu nahraďte název registru kontejneru a ID prostředku podsítě:
az acr network-rule add \
--name mycontainerregistry \
--subnet <subnet-resource-id>
Ověření přístupu k registru
Po několika minutách, než se konfigurace aktualizuje, ověřte, že má virtuální počítač přístup k registru kontejneru. Vytvořte připojení SSH k virtuálnímu počítači a spuštěním příkazu az acr login ověřte ho ve vašem registru.
az acr login --name mycontainerregistry
Můžete provádět operace registru, jako je spuštění docker pull pro načtení ukázkové image z registru. Nahraďte obraz a hodnotu tagu, které odpovídají vašemu registru, před názvem přihlašovacího serveru registru (všechna malá písmena):
docker pull mycontainerregistry.azurecr.io/hello-world:v1
Docker úspěšně načítá image do virtuálního počítače.
Tento příklad ukazuje, že k privátnímu registru kontejneru můžete přistupovat prostřednictvím pravidla síťového přístupu. Registr ale není přístupný z hostitele přihlášení, který nemá nakonfigurované pravidlo síťového přístupu. Pokud se pokusíte ověřit z jiného hostitele pomocí az acr login příkazu nebo docker login příkazu, zobrazí se výstup podobný následujícímu:
Error response from daemon: login attempt to https://xxxxxxx.azurecr.io/v2/ failed with status: 403 Forbidden
Obnovení výchozího přístupu k registru
Pokud chcete obnovit registr tak, aby povoloval přístup, odeberte všechna pravidla sítě, která jste nakonfigurovali. Pak nastavte výchozí akci, která povolí přístup.
Odebrání pravidel sítě
Pokud chcete zobrazit seznam pravidel sítě nakonfigurovaných pro váš registr, spusťte následující příkaz az acr network-rule list :
az acr network-rule list --name mycontainerregistry
Pro každé pravidlo, které jste nakonfigurovali, spusťte příkaz az acr network-rule remove a odeberte ho. Příklad:
# Remove a rule that allows access for a subnet. Substitute the subnet resource ID.
az acr network-rule remove \
--name mycontainerregistry \
--subnet /subscriptions/ \
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myDockerVMVNET/subnets/myDockerVMSubnet
Povolit přístup
Nahraďte název registru v následujícím příkazu az acr update :
az acr update --name myContainerRegistry --default-action Allow
Vyčištění prostředků
Pokud jste vytvořili všechny prostředky Azure ve stejné skupině prostředků a už je nepotřebujete, můžete celou skupinu prostředků odstranit pomocí příkazu az group delete :
az group delete --name myResourceGroup
Související obsah
- Pokud chcete omezit přístup k registru pomocí privátního koncového bodu ve virtuální síti, přečtěte si téma Připojení privátního úložiště ke službě Azure Container Registry pomocí služby Azure Private Link.
- Pokud potřebujete nastavit pravidla přístupu registru za bránou firewall klienta, přečtěte si téma Konfigurace pravidel pro přístup k registru kontejneru Azure za bránou firewall.