Kapsayıcı görüntülerini kapsayıcı kayıt defterine aktarma

Docker komutlarını kullanmadan kapsayıcı görüntülerini kolayca azure kapsayıcı kayıt defterine aktarabilirsiniz (kopyalayabilirsiniz). Örneğin, görüntüleri geliştirme kayıt defterinden üretim kayıt defterine aktarın veya temel görüntüleri genel kayıt defterinden kopyalayın.

Azure Container Registry, mevcut kayıt defterinden görüntüleri ve diğer yapıtları kopyalamak için bir dizi yaygın senaryoyu ele almaktadır:

  • Genel kayıt defterinden görüntüleri içeri aktarma

  • Aynı veya farklı bir Azure aboneliğinde veya kiracıda başka bir Azure kapsayıcı kayıt defterinden Helm 3 grafikleri de dahil olmak üzere görüntüleri veya OCI yapıtlarını içeri aktarma

  • Azure olmayan özel kapsayıcı kayıt defterinden içeri aktarma

Azure kapsayıcı kayıt defterine görüntü aktarma, Docker CLI komutlarını kullanmaya göre aşağıdaki avantajlara sahip olur:

  • İstemci ortamınız yerel bir Docker yüklemesi gerekmeyce, desteklenen işletim sistemi türünden bağımsız olarak herhangi bir kapsayıcı görüntüsünü içeri aktarın.

  • Çok mimarili görüntüleri (resmi Docker görüntüleri gibi) içeri aktarıyorsanız, bildirim listesinde belirtilen tüm mimarilerin ve platformların görüntüleri kopyalanır.

  • Hedef kayıt defterine erişim, kayıt defterinin genel uç noktasını kullanmak zorunda değil.

Kapsayıcı görüntülerini içeri aktarmaya yönelik bu makalede Azure CLI'Azure Cloud Shell yerel olarak çalıştırmanız gerekir (sürüm 2.0.55 veya sonraki bir sürüm önerilir). Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

Not

Birden çok Azure bölgesinde aynı kapsayıcı görüntülerini dağıtmanız gerekirse, Azure Container Registry coğrafi çoğaltmayı da destekler. Bir kayıt defterini coğrafi olarak çoğaltarak (Premium hizmet katmanı gerekir), tek bir kayıt defterinden aynı görüntüye ve etiket adlara sahip birden çok bölgeye hizmet veebilirsiniz.

Önemli

İki Azure kapsayıcısı kayıt defterleri arasındaki görüntü içeri aktarma değişiklikleri Ocak 2021'den itibaren tanıtıldı:

  • Ağ ile kısıtlanmış bir Azure kapsayıcı kayıt defterine veya kayıt defterinden içeri aktarma, güvenilen hizmetlerin ağı atlayarak erişmesine izin vermek için kısıtlı kayıt defteri gerektirir. Varsayılan olarak, ayar etkindir ve içeri aktarmaya izin sağlar. Ayar yeni oluşturulan bir kayıt defterinde özel uç noktayla veya kayıt defteri güvenlik duvarı kurallarıyla etkinleştirilmediyse içeri aktarma başarısız olur.
  • İçeri aktarma kaynağı veya hedefi olarak kullanılan ağ ile kısıtlanmış mevcut bir Azure kapsayıcı kayıt defterinde bu ağ güvenlik özelliğini etkinleştirmek isteğe bağlıdır ancak önerilir.

Önkoşullar

Henüz bir Azure kapsayıcı kayıt defteriniz yoksa bir kayıt defteri oluşturun. Adımlar için bkz. Hızlı Başlangıç: Azure CLI kullanarak özel kapsayıcı kayıt defteri oluşturma.

Bir görüntüyü Azure kapsayıcı kayıt defterine içeri aktaracak şekilde, kimliğinizin hedef kayıt defteri üzerinde yazma izinlerine sahip olması gerekir (en azından Katkıda Bulunan rolü veya importImage eylemine izin veren özel bir rol). Bkz Azure Container Registry rolleri ve izinleri.

Genel kayıt defterinden içeri aktarma

Verilerden içeri Docker Hub

Örneğin, az acr import komutunu kullanarak çok mimarili görüntüyü Docker Hub myregistry adlı bir hello-world:latest kayıt defterine aktarın. Bu görüntü, Docker Hub resmi bir görüntü hello-world olduğundan varsayılan library depodadır. Depo adını ve isteğe bağlı olarak görüntü parametresinin değerine bir --source etiket ekleyin. (İsteğe bağlı olarak bir görüntüyü etiket yerine bildirim özetine göre tanımlayabilirsiniz. Bu, görüntünün belirli bir sürümünü garantiler.)

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

komutunu çalıştırarak bu görüntüyle ilişkili birden çok bildirimi az acr repository show-manifests doğruabilirsiniz:

az acr repository show-manifests \
  --name myregistry \
  --repository hello-world

Bir Docker Hub hesabınız varsa,bu hesaptan bir görüntüyü içeri aktarıyorsanız kimlik bilgilerini Docker Hub. Kullanıcı adını Docker Hub parolayı veya kişisel erişim belirteci parametresini parametresi olarak iletir. az acr import Aşağıdaki örnek, Docker Hub kimlik bilgilerini kullanarak tensorflow Docker Hub içeri aktarıyor:

az acr import \
  --name myregistry \
  --source docker.io/tensorflow/tensorflow:latest-gpu \
  --image tensorflow:latest-gpu
  --username <Docker Hub user name>
  --password <Docker Hub token>

Dosyadan içeri Microsoft Container Registry

Örneğin, Windows ltsc2019 Server Core görüntüsünü depodan windows içeri aktarın Microsoft Container Registry.

az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019

Aynı AD kiracısı içinde bir Azure kapsayıcı kayıt defterinden içeri aktarma

Tümleşik depolama izinlerini kullanarak aynı AD kiracısı içinde bir Azure kapsayıcı kayıt defterinden görüntü Azure Active Directory edinebilirsiniz.

  • Kimliğiniz, Azure Active Directory kayıt defterinden (Okuyucu rolü) okumak ve hedef kayıt defterine (Katkıda Bulunan rolü veya importImage eylemine izin veren özel bir rol) içeri aktarma iznine sahip olmalı.

  • Kayıt defteri aynı Active Directory kiracısı içinde aynı veya farklı bir Azure aboneliğinde olabilir.

  • Kaynak kayıt defterine genel erişim devre dışı bırakılabilir. Genel erişim devre dışı bırakılırsa, kaynak kayıt defterini kayıt defteri oturum açma sunucusu adı yerine kaynak kimliğine göre belirtin.

  • Kaynak kayıt defteri ve/veya hedef kayıt defterinde özel bir uç nokta veya kayıt defteri güvenlik duvarı kuralları varsa, kısıtlı kayıt defterinin güvenilen hizmetlerin ağa erişmesini sağlar.

Aynı abonelikte bir kayıt defterinden içeri aktarma

Örneğin, görüntüyü aci-helloworld:latest mysourceregistry kaynak kayıt defterinden aynı Azure aboneliğinde myregistry'ye aktarın.

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld:latest \
  --image aci-helloworld:latest

Aşağıdaki örnek, görüntüyü mysourceregistry kaynak kayıt defterinden aci-helloworld:latest myregistry'ye içeri aktararak kayıt defterinin genel uç noktasına erişimin devre dışı bırakılmıştır. parametresiyle kaynak kayıt defterinin kaynak kimliğini --registry girin. parametresinin kayıt defteri oturum açma sunucusu adını değil yalnızca kaynak --source depoyu ve etiketi belirtir.

az acr import \
  --name myregistry \
  --source aci-helloworld:latest \
  --image aci-helloworld:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Aşağıdaki örnek, etiket yerine bildirim özetine (SHA-256 karma, olarak temsil edilen sha256:... ) göre bir görüntüyü içeri aktarıyor:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg 

Farklı bir abonelikte kayıt defterinden içeri aktarma

Aşağıdaki örnekte, mysourceregistry aynı Active Directory kiracısı içinde myregistry'den farklı bir aboneliktedir. parametresiyle kaynak kayıt defterinin kaynak kimliğini --registry girin. parametresinin kayıt defteri oturum açma sunucusu adını değil yalnızca kaynak --source depoyu ve etiketi belirtir.

az acr import \
  --name myregistry \
  --source samples/aci-helloworld:latest \
  --image aci-hello-world:latest \
  --registry /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry

Hizmet sorumlusu kimlik bilgilerini kullanarak kayıt defterinden içeri aktarma

Tümleşik Active Directory izinlerini kullanarak erişe olmadığınız bir kayıt defterinden içeri aktarma yapmak için, kaynak kayıt defterine hizmet sorumlusu kimlik bilgilerini (varsa) kullanabilirsiniz. Kaynak kayıt defterine ACRCil erişimi olan bir Active Directory hizmet sorumlusuna appID ve parola girin. Hizmet sorumlusu kullanmak, görüntüleri kayıt defterinize aktarması gereken derleme sistemleri ve diğer katılımsız sistemler için yararlıdır.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Farklı bir AD kiracısı içinde Azure kapsayıcı kayıt defterinden içeri aktarma

Farklı bir kiracıda Azure kapsayıcı kayıt defterinden içeri Azure Active Directory için, oturum açma sunucusu adına göre kaynak kayıt defterini belirtin ve kayıt defterine çekme erişimini etkinleştiren kimlik bilgilerini belirtin.

Kullanıcı adı ve parola ile kiracılar arası içeri aktarma

Örneğin, depo kapsamlı bir belirteç ve parola ya da kaynak kayıt defterine ACRCil erişimi olan bir Active Directory hizmet sorumlusunun appID ve parolasını kullanın.

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --username <SP_App_ID> \
  --password <SP_Passwd>

Erişim belirteci ile kiracılar arası içeri aktarma

Kaynak kiracıda kayıt defteri izinlerine sahip bir kimlik kullanarak kaynak kayıt defterine erişmek için erişim belirteci elde edersiniz:

# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>

# Get access token returned by `az account get-access-token`
az account get-access-token 

Hedef kiracıda, erişim belirteci komutuna parola olarak az acr import geçer. Kaynak kayıt defteri oturum açma sunucusu adıyla belirtilir. Bu komutta kullanıcı adı gerekli değildir:

az acr import \
  --name myregistry \
  --source sourceregistry.azurecr.io/sourcerrepo:tag \
  --image targetimage:tag \
  --password <access-token>

Azure olmayan özel kapsayıcı kayıt defterinden içeri aktarma

Kayıt defterine çekme erişimi sağlayan kimlik bilgilerini belirterek Azure olmayan özel kayıt defterinden bir görüntüyü içeri aktarın. Örneğin, özel bir Docker kayıt defterinden bir görüntü çekin:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

Sonraki adımlar

Bu makalede, kapsayıcı görüntülerini genel kayıt defterinden veya başka bir özel kayıt defterinden Azure kapsayıcı kayıt defterine aktarma hakkında bilgi edindiniz. Ek görüntü içeri aktarma seçenekleri için az acr import komut başvurusuna bakın.