Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Registry, kapsayıcı görüntülerini ve ilgili yapıtları oluşturmaya, depolamaya ve yönetmeye yönelik özel bir kayıt defteri hizmetidir. Bu hızlı başlangıçta, Azure CLI ile bir Azure kapsayıcı kayıt defteri örneği oluşturacaksınız. Ardından Docker komutlarını kullanarak kayıt defterine bir kapsayıcı görüntüsü gönderin ve son olarak görüntüyü kayıt defterinizden çekip çalıştırın.
Bu hızlı başlangıç için Azure CLI'yi ç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.
Ayrıca sisteminizde yerel olarak Docker yüklü olması gerekir. Docker macOS, Windows veya Linux'ta Docker'ı kolayca yapılandırmanızı sağlayan paketler sağlar.
Azure Cloud Shell gerekli tüm Docker bileşenlerini (dockerd
daemon) içermediğinden, bu hızlı başlangıçta Cloud Shell’i kullanamazsınız.
Kaynak grubu oluşturma
az group create komutuyla bir kaynak grubu oluşturun. Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.
Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur.
az group create --name myResourceGroup --location eastus
Kapsayıcı kayıt defteri için parametreleri yapılandırın
Bu hızlı başlangıçta, çoğu Azure Container Registry iş akışı için yeterli olan bir Standart kayıt defteri oluşturacaksınız. Kullanılabilir hizmet katmanlarıyla ilgili ayrıntılar için bkz Kapsayıcı kayıt defteri hizmet katmanları.
az act create komutunu kullanarak bir ACR örneği oluşturun. Kayıt defteri adı Azure içinde benzersiz olmalı ve 5-50 küçük harf alfasayısal karakter içermelidir. Aşağıdaki örnekte mycontainerregistry kullanılmıştır. Bunu benzersiz bir değerle güncelleştirin.
Etki Alanı Adı Etiketi (DNL) yapılandırma
Etki Alanı Adı Etiketi (DNL) özelliği, kayıt defteri DNS adlarının alt etki alanı devralma saldırılarını engelleyerek güvenliği güçlendirir. Bu saldırılar, bir kayıt defteri silindiğinde ve başka bir varlık aynı kayıt defteri adını yeniden kullanarak kayıt defterini yeniden oluşturduğunda, aşağı akış referanslarının bu yeni oluşturulan kayıt defterinden geri çekilmesine neden olabilir.
DNL, kayıt defterine ait DNS adına benzersiz bir karma ekleyerek bunu giderir. Bu, aynı kayıt defteri adı başka bir varlık tarafından yeniden kullanılıyor olsa bile DNS adlarının benzersiz karma nedeniyle farklı olmasını sağlar. Bu, aşağı akış başvurularınızın yanlışlıkla diğer varlık tarafından yeniden oluşturulan kayıt defterine işaret etmelerini engeller.
az acr create komutundan kayıt defteri oluştururken isteğe bağlı bayrağı --dnl-scope
belirtebilir ve kullanılabilir seçenekler arasından seçim yapabilirsiniz:
-
Unsecure
: as-isDNS adını kayıt defteri adına göre oluşturur (ör.contosoacrregistry.azurecr.io
). Bu seçenek DNL korumasını içermez. -
TenantReuse
: Kiracı ve kayıt adına göre benzersiz bir karma ekleyerek, kiracı içinde dns adının benzersiz olmasını sağlar. -
SubscriptionReuse
: Abonelik, kiracı ve kayıt defteri adına göre benzersiz bir karma ekleyerek DNS adının abonelik içinde benzersiz olmasını sağlar. -
ResourceGroupReuse
: Kaynak grubu, abonelik, kiracı ve kayıt defteri adlarına göre benzersiz bir karma ekleyerek DNS adının, kaynak grubu içinde benzersiz olmasını sağlar. -
NoReuse
: Kayıt defteri her oluşturulduğunda, diğer faktörlerden bağımsız olarak benzersiz bir karma ile DNS adı oluşturur ve bu adın her zaman benzersiz olmasını sağlar.
Uyarı
Sabit Yapılandırma: Kayıt defteri oluşturma sırasında seçilen DNL kapsamı kalıcıdır ve daha sonra değiştirilemez. Bu, tutarlı DNS davranışı sağlar ve aşağı akış başvurularında kesinti yaşanmasını önler.
DNL seçeneklerinin DNS Adı Etkileri
DNS Adı Biçimi: Unsecure
dışında tüm DNL özellikli seçenekler için DNS adı, tirenin (-
) karma ayırıcı olarak görev yaptığı registryname-hash.azurecr.io
biçimini izler. Çakışmaları önlemek için kayıt defteri adında tireye (-
) izin verilmez. Örneğin, contosoacrregistry
adındaki bir kayıt defteri, TenantReuse
DNL kapsamına sahipse contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
gibi bir DNS adı olacaktır.
Aşağı Akış Başvuruları: DNS adı kayıt defteri adından farklı olabilir ve Dockerfiles, Kubernetes YAML ve Helm grafikleri gibi aşağı akış dosyalarındaki güncelleştirmelerin DNL karması ile tam DNS adını yansıtmasını gerektirebilir. Örneğin, aşağı akış Dockerfile'ınızın, contosoacrregistry
DNL kapsamına sahip TenantReuse
adlı bir kayıt defterine başvurmasını istiyorsanız, aşağı akış Dockerfile'ınızdaki başvuruyu contosoacrregistry-e7ggejfuhzhgedc8.azurecr.io
olarak güncelleştirmeniz gerekir.
Rol atama izinleri modunu yapılandırma
İsteğe bağlı olarak parametresini --role-assignment-mode
kullanarak kayıt defterinin rol atama modunu belirtebilirsiniz.
Bu seçenek, Microsoft Entra depo izinleri için Microsoft Entra öznitelik tabanlı erişim denetimi (ABAC) kullanımı dahil olmak üzere Kayıt defteri için Microsoft Entra rol tabanlı erişim denetiminin (RBAC) ve rol atamalarının nasıl yönetileceğini belirler.
İsteğe bağlı olarak ayrıntılı, depo düzeyinde erişim denetimi için Microsoft Entra ABAC koşullarını uygularken standart Microsoft Entra RBAC rol atamalarını korumak için bu parametreyi belirtin rbac-abac
.
Bu seçenek hakkında daha fazla bilgi için bkz. Depo izinleri için Microsoft Entra öznitelik tabanlı erişim denetimi (ABAC).
Kapsayıcı kayıt defteri oluşturma
az acr create --resource-group myResourceGroup \
--name mycontainerregistry --sku Standard \
--role-assignment-mode 'rbac-abac' \
--dnl-scope TenantReuse
Kayıt defteri oluşturulduğunda çıkış aşağıdakilere benzer:
{
"adminUserEnabled": false,
"creationDate": "2019-01-08T22:32:13.175925+00:00",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry",
"location": "eastus",
"loginServer": "mycontainerregistry-e7ggejfuhzhgedc8.azurecr.io",
"name": "mycontainerregistry",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Standard",
"tier": "Standard"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries",
"roleAssignmentMode": "AbacRepositoryPermissions",
"autoGeneratedDomainNameLabelScope": "TenantReuse"
}
Çıktıdaki loginServer
tam nitelikli kayıt defteri adını (tümü küçük harfle) ifade eder. Hızlı başlangıcın geri kalanında, <registry-name>
kapsayıcı kayıt defteri adı için bir yer tutucu, <login-server>
ise kayıt defterinin oturum açma sunucusu adı için bir yer tutucudur.
İpucu
Bu hızlı başlangıçta, çoğu Azure Container Registry iş akışı için yeterli olan bir Standart kayıt defteri oluşturacaksınız. Daha fazla depolama ve görüntü aktarım hızı için diğer katmanları ve özel uç nokta kullanarak bağlantı gibi özellikleri seçin. Kullanılabilir hizmet katmanları (SKU'lar) hakkında ayrıntılı bilgi için bkz Kapsayıcı kayıt defteri hizmet katmanları.
Kayıt defterinde oturum açma
Kapsayıcı görüntülerini itip çekmeden önce kayıtta oturum açmanız gerekir. Bunu yapmak için az acr login komutunu kullanın. Azure CLI ile oturum açarken yalnızca kayıt defteri kaynak adını belirtin. Tam nitelikli oturum açma sunucusu adını kullanmayın.
az acr login --name <registry-name>
Örnek:
az acr login --name mycontainerregistry
Bu komut tamamlandığında Login Succeeded
iletisi döndürülür.
Kayıt defterine görüntü gönderme
Azure Container kayıt defterine görüntü gönderebilmeniz için önce bir görüntünüz olmalıdır. Henüz yerel kapsayıcı görüntüleriniz yoksa, mevcut bir genel görüntüyü çekmek için aşağıdaki docker pull komutunu çalıştırın. Bu örnekte, görüntüyü Microsoft Container Registry'den çekin hello-world
.
docker pull mcr.microsoft.com/hello-world
Bir görüntüyü kayıt defterinize gönderebilmeniz için önce kayıt defteri oturum açma sunucunuzun tam adıyla docker etiketini kullanarak etiketlemeniz gerekir.
- Etki Alanı Adı Etiketi (DNL) korumalı kayıt defterleri için benzersiz bir DNS adı karması içeren oturum açma sunucusu adı biçimi şeklindedir
mycontainerregistry-abc123.azurecr.io
. - DNL seçeneğiyle
Unsecure
oluşturulan kayıt defterleri için oturum açma sunucusu adı biçimimycontainerregistry.azurecr.io
şeklindedir.
Örneğin, kayıt defteriniz Tenant Reuse
DNL kapsamı ile oluşturulduysa, sunucu DNS adında bir karma ile mycontainerregistry-abc123.azurecr.io
gibi görünebilir. Kayıt defteriniz DNL seçeneğiyle Unsecure
oluşturulduysa, oturum açma sunucusu karma olmadan gibi mycontainerregistry.azurecr.io
görünür.
Kayıt defteri oluşturma sırasında DNL seçenekleri ve DNS adı etkileri hakkında daha fazla bilgi için bkz. Hızlı Başlangıç - Portalda Kayıt Defteri Oluşturma.
Örnek: Göndermeden önce bir görüntüyü etiketleme
Kayıt defterinizin oturum açma sunucusunu kullanarak docker tag komutunu kullanarak görüntüyü etiketleyin.
DNL olmayan bir kayıt defteri için etiketleme görüntüsü:
docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.io/hello-world:v1
DNL özellikli kayıt defteri için etiketleme görüntüsü:
docker tag mcr.microsoft.com/hello-world mycontainerregistry-abc123.azurecr.io/hello-world:v1
Son olarak, görüntüyü kayıt defteri örneğine göndermek için docker push komutunu kullanın.
<login-server>
değerini kayıt defteri örneğinizin oturum açma sunucusu adıyla değiştirin. Bu örnek, görüntüyü içeren hello-world.
docker push <login-server>/hello-world:v1
Görüntüyü kapsayıcı kayıt defterinize gönderdikten sonra görüntüyü yerel Docker ortamınızdan kaldırın hello-world:v1
. (Bu docker rmi komutunun görüntüyü Azure kapsayıcı kayıt defterinizdeki hello-world deposundan kaldırmadığını unutmayın.)
docker rmi <login-server>/hello-world:v1
Kapsayıcı görüntülerini listeleme
Aşağıdaki örnekte kayıt defterinizdeki depolar listelenir:
az acr repository list --name <registry-name> --output table
Çıktı:
Result
----------------
hello-world
Aşağıdaki örnek hello-world deposundaki etiketleri listeler.
az acr repository show-tags --name <registry-name> --repository hello-world --output table
Çıktı:
Result
--------
v1
Kayıt defterinden görüntü çalıştırma
Artık docker runhello-world:v1
kapsayıcı görüntüsünü kapsayıcı kayıt defterinizden çekip çalıştırabilirsiniz:
docker run <login-server>/hello-world:v1
Örnek çıkış:
Unable to find image 'mycontainerregistry.azurecr.io/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.io/hello-world:v1
Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]
Kaynakları temizleme
Artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu, kapsayıcı kayıt defterini ve burada depolanan kapsayıcı görüntülerini kaldırabilirsiniz.
az group delete --name myResourceGroup
Sonraki adımlar
Bu hızlı başlangıçta, Azure CLI ile bir Azure Container Registry oluşturdunuz, kayıt defterine bir kapsayıcı görüntüsü ilettiniz ve görüntüyü kayıt defterinden çekip çalıştırdunuz. ACR'ye daha ayrıntılı bir bakış için Azure Container Registry öğreticilerine geçin.