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

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

Azure Container Registry, mevcut bir kayıt defterinden görüntüleri ve diğer yapıtları kopyalamak için birçok yaygın senaryoyı işler:

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

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

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

Azure kapsayıcı kayıt defterine görüntü aktarma, Docker CLI komutlarını kullanma açısından aşağıdaki avantajlara sahiptir:

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

  • Çok mimarili görüntüleri (resmi Docker görüntüleri gibi) içeri aktarırsanız bildirim listesinde belirtilen tüm mimarilere ve platformlara ait görüntüler kopyalanır.

  • Hedef kayıt defterine erişiyorsa, kayıt defterinin genel uç noktasını kullanması gerekmez.

Önemli

  • Görüntüleri içeri aktarmak için dış kayıt defteri desteği RFC 7233 gerekir. Hataları önlemek için kayıt defteri URI'siyle az acr import komutunu kullanırken RFC 7233 aralıklarını destekleyen bir kayıt defteri kullanmanızı öneririz.

Sınırlamalar

  • İçeri aktarılan görüntü için bildirim sayısı üst sınırı 50'dir.
  • Genel kayıt defterinden içeri aktarılan bir görüntünün katman boyutu üst sınırı 2 GiB'dir.

Kapsayıcı görüntülerini içeri aktarmak için bu makalede Azure CLI'yı Azure Cloud Shell'de veya yerel olarak çalıştırmanız gerekir (sürüm 2.0.55 veya üzeri ö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

Aynı kapsayıcı görüntülerini birden çok Azure bölgesine dağıtmanız gerekiyorsa, Azure Container Registry coğrafi çoğaltmayı da destekler. Bir kayıt defterini coğrafi olarak çoğaltarak (Premium hizmet katmanı gereklidir), tek bir kayıt defterinden aynı görüntü ve etiket adlarına sahip birden çok bölgeye hizmet vekleyebilirsiniz.

Önemli

İki Azure kapsayıcı kayıt defteri arasındaki görüntü içeri aktarma değişiklikleri Ocak 2021 itibarıyla kullanıma sunulmuştur:

  • Ağ ile kısıtlanmış bir Azure kapsayıcı kayıt defterine veya bu kayıt defterinden içeri aktarma işlemi, güvenilen hizmetlerin ağı atlamasına izin vermek için kısıtlanmış kayıt defterini gerektirir. Varsayılan olarak, ayar etkindir ve içeri aktarmaya izin verir. Ayar özel uç noktayla veya kayıt defteri güvenlik duvarı kurallarıyla yeni oluşturulan bir kayıt defterinde etkinleştirilmediyse içeri aktarma işlemi başarısız olur.
  • İçeri aktarma kaynağı veya hedefi olarak kullanılan mevcut bir ağ kısıtlanmış Azure kapsayıcı kayıt defterinde bu ağ güvenliği özelliğinin etkinleştirilmesi 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 aktarmak için, kimliğinizin hedef kayıt defterinde yazma izinleri olmalıdır (en az 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

Önemli

Genel kayıt defterinden ağ kısıtlanmış azure kapsayıcı kayıt defterine aktarmak için , kısıtlı kayıt defterinin güvenilen hizmetlerin ağı atlamasına izin vermesini gerektirir. Varsayılan olarak, ayar etkindir ve içeri aktarmaya izin verir. Ayar özel uç noktayla veya kayıt defteri güvenlik duvarı kurallarıyla yeni oluşturulan bir kayıt defterinde etkinleştirilmediyse içeri aktarma işlemi başarısız olur.

Docker Hub'dan içeri aktarma

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

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

az acr manifest list-metadata komutunu çalıştırarak bu görüntüyle birden çok bildirimin ilişkilendirildiğini doğrulayabilirsiniz:

az acr manifest list-metadata \
  --name hello-world \
  --registry myregistry

Bir yapıtı etiket eklemeden özete göre içeri aktarmak için:

az acr import \
   --name myregistry \
   --source docker.io/library/hello-world@sha256:abc123 \
   --repository hello-world

Docker Hub hesabınız varsa, Docker Hub'dan görüntü içeri aktarırken kimlik bilgilerini kullanmanızı öneririz. Docker Hub kullanıcı adını ve parolayı veya kişisel erişim belirtecini parametresi olarak geçirin az acr import. Aşağıdaki örnek, Docker Hub kimlik bilgilerini kullanarak Docker Hub'daki depodan tensorflow genel bir görüntüyü içeri aktarır:

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>

Microsoft Container Registry'den içeri aktarma

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

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

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

Tümleşik Microsoft Entra izinlerini kullanarak aynı AD kiracısında bir Azure kapsayıcı kayıt defterinden görüntü içeri aktarabilirsiniz.

  • Kimliğinizin kaynak kayıt defterinden okumak (Okuyucu rolü) ve hedef kayıt defterine (Katkıda Bulunan rolü veya importImage eylemine izin veren özel bir rol ) içeri aktarmak için Microsoft Entra izinlerine sahip olması gerekir.

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

  • Kaynak kayıt defterine genel erişim devre dışı bırakılmış olabilir. 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 özel uç nokta veya kayıt defteri güvenlik duvarı kuralları olan hedef kayıt defteri, kısıtlı kayıt defterinin güvenilen hizmetlerin ağa erişmesine izin verdiğinden emin olmalıdır.

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

Örneğin, bir kaynak kayıt defteri mysource kayıt defterinden aci-helloworld:latest görüntüyü aynı Azure aboneliğindeki 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ü kayıt defterinin aci-helloworld:latest genel uç noktasına erişimin devre dışı bırakıldığı kaynak kayıt defteri mysourceregistry'den myregistry'ye aktarır. parametresiyle kaynak kayıt defterinin kaynak kimliğini sağlayın --registry . parametresinin --source kayıt defteri oturum açma sunucusu adını değil yalnızca kaynak depoyu ve etiketi belirttiğine dikkat edin.

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, bir görüntüyü etiket yerine bildirim özetini (SHA-256 karması, olarak sha256:...temsil edilir) içeri aktarır:

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

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

Not

Bir görüntüyü bir kayıt defterinden diğerine aktarmak için, kaynak ve hedef kayıt defterlerinin her iki bölgenin de aboneliğin kaynak sağlayıcıları altında Azure Container Registry(ACR) için kayıtlı olduğundan emin olması gerekir.

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

az acr import \
  --name myregistry \
  --source 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şemediğiniz bir kayıt defterinden içeri aktarmak için, kaynak kayıt defterinde hizmet sorumlusu kimlik bilgilerini (varsa) kullanabilirsiniz. Kaynak kayıt defterine ACRPull erişimi olan bir Active Directory hizmet sorumlusunun appID'sini ve parolasını sağlayın. Hizmet sorumlusu kullanmak, kayıt defterinize görüntü 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ında Azure kapsayıcı kayıt defterinden içeri aktarma

Farklı bir Microsoft Entra kiracısında bulunan bir Azure kapsayıcı kayıt defterinden içeri aktarmak için, kaynak kayıt defterini oturum açma sunucusu adına göre belirtin ve kayıt defterine çekme erişimi sağlayan kimlik bilgilerini sağlayın.

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 ACRPull 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 bir erişim belirteci alabilirsiniz:

# 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 belirtecini komuta parola az acr import olarak geçirin. Kaynak kayıt defteri oturum açma sunucusu adını belirtir. Bu komutta kullanıcı adı gerekli olmadığına dikkat edin:

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

Not

Kiracılar arası bulutlar arasında çalışmaz. Özel uç noktalar üzerinden kiracılar arası içeri aktarma da desteklenmez.

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

Kayıt defterine çekme erişimi sağlayan kimlik bilgilerini belirterek Azure dışı bir özel kayıt defterinden görüntü içeri aktarın. Örneğin, özel bir Docker kayıt defterinden 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 bir kayıt defterinden veya başka bir özel kayıt defterinden Azure kapsayıcı kayıt defterine aktarmayı öğrendiniz.