Mengimpor citra kontainer ke registri kontainer
Anda dapat dengan mudah mengimpor (menyalin) citra kontainer ke Azure Container Registry, tanpa menggunakan perintah Docker. Misalnya, mengimpor citra dari registri pengembangan ke registri produksi, atau menyalin citra dasar dari registri publik.
Azure Container Registry menangani banyak skenario umum untuk menyalin gambar dan artefak lain dari registri yang ada:
Mengimpor citra dari registri publik
Mengimpor gambar atau artefak OCI termasuk bagan Helm 3 dari registri kontainer Azure lain, dalam langganan atau penyewa Azure yang sama, atau yang berbeda
Mengimpor dari registri kontainer pribadi non-Azure
Impor citra ke dalam Azure Container Registry memiliki manfaat berikut menggunakan perintah Docker CLI:
Jika lingkungan klien Anda tidak memerlukan penginstalan Docker lokal, Anda dapat Mengimpor gambar kontainer apa pun, terlepas dari jenis OS yang didukung.
Jika Anda mengimpor gambar multi-arsitektur (seperti gambar Docker resmi), gambar untuk semua arsitektur dan platform yang ditentukan dalam daftar manifes akan disalin.
Jika Anda mengakses registri target, registri tidak perlu menggunakan titik akhir publik registri.
Penting
- Mengimpor gambar memerlukan dukungan registri eksternal RFC 7233. Sebaiknya gunakan registri yang mendukung rentang RFC 7233 saat menggunakan perintah az acr import dengan URI registri untuk menghindari kegagalan.
Batasan
- Jumlah maksimum manifes untuk gambar yang diimpor adalah 50.
- Ukuran lapisan maksimum untuk gambar yang diimpor dari registri publik adalah 2 GiB.
Untuk mengimpor citra kontainer, artikel ini mengharuskan Anda menjalankan Azure CLI di Azure Cloud Shell atau secara lokal (versi 2.0.55 atau yang lebih baru direkomendasikan). Jalankan az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
Catatan
Jika Anda ingin mendistribusikan citra kontainer yang identik di beberapa wilayah Azure, Azure Container Registry juga mendukung replikasi geografis. Dengan mereplikasi registri secara geografis (diperlukan tingkat layanan Premium), Anda dapat melayani beberapa wilayah dengan nama citra dan tag yang identik dari satu registri.
Penting
Perubahan pada impor citra antara dua registri kontainer Azure telah diperkenalkan per Januari 2021:
- Impor ke atau dari registri kontainer Azure yang dibatasi jaringan memerlukan registri terbatas untuk memungkinkan akses oleh layanan tepercaya untuk melewati jaringan. Secara default, pengaturan diaktifkan, memungkinkan impor. Jika pengaturan tidak diaktifkan di registri yang baru dibuat dengan titik akhir privat atau dengan aturan firewall registri, impor akan gagal.
- Dalam registri kontainer Azure yang dibatasi jaringan yang sudah ada yang digunakan sebagai sumber impor atau target, mengaktifkan fitur keamanan jaringan ini bersifat opsional tetapi direkomendasikan.
Prasyarat
Jika Anda belum memiliki registri kontainer Azure, buat registri. Untuk langkah-langkahnya, lihat Mulai cepat: Membuat registri kontainer privat menggunakan Azure CLI.
Untuk mengimpor citra ke registri kontainer Azure, identitas Anda harus memiliki izin penulisan ke registri target (setidaknya peran Kontributor, atau peran kustom yang memungkinkan tindakan importImage). Lihat Peran dan izin Azure Container Registry.
Mengimpor dari registri publik
Penting
Untuk mengimpor dari registri publik ke registri kontainer Azure yang dibatasi jaringan memerlukan registri terbatas untuk memungkinkan akses oleh layanan tepercaya untuk melewati jaringan. Secara default, pengaturan diaktifkan, memungkinkan impor. Jika pengaturan tidak diaktifkan di registri yang baru dibuat dengan titik akhir privat atau dengan aturan firewall registri, impor akan gagal.
Mengimpor dari Docker Hub
Misalnya, gunakan perintah impor az acr untuk mengimpor citra hello-world:latest
multi-arsitektur dari Docker Hub ke registri bernama myregistry. Karena hello-world
merupakan citra resmi dari Docker Hub, citra ini berada di repositori library
default. Sertakan nama repositori dan opsional tag dalam nilai parameter citra --source
. (Anda dapat secara opsional mengidentifikasi citra dengan pencernaan manifesnya dan bukan dengan tag, yang menjamin versi citra tertentu.)
az acr import \
--name myregistry \
--source docker.io/library/hello-world:latest \
--image hello-world:latest
Anda dapat memverifikasi bahwa beberapa manifes dikaitkan dengan citra ini dengan menjalankan perintah az acr manifest list-metadata:
az acr manifest list-metadata \
--name hello-world \
--registry myregistry
Untuk mengimpor artefak dengan digest tanpa menambahkan tag:
az acr import \
--name myregistry \
--source docker.io/library/hello-world@sha256:abc123 \
--repository hello-world
Jika Anda memiliki akun Docker Hub, kami sarankan Anda menggunakan informasi masuk saat mengimpor citra dari Docker Hub. Berikan nama pengguna dan kata sandi atau Docker Hub token akses pribadi sebagai parameter ke az acr import
. Contoh berikut mengimpor citra publik dari repositori tensorflow
di Docker Hub, menggunakan informasi masuk Docker Hub:
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>
Mengimpor dari Microsoft Container Registry
Misalnya, mengimpor citra Windows Server Core ltsc2019
dari repositori windows
di Microsoft Container Registry.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Mengimpor dari registri kontainer Azure di penyewa AD yang sama
Anda dapat mengimpor gambar dari registri kontainer Azure di penyewa AD yang sama menggunakan izin Microsoft Entra terintegrasi.
Identitas Anda harus memiliki izin Microsoft Entra untuk membaca dari registri sumber (peran Pembaca) dan untuk mengimpor ke registri target (peran Kontributor, atau peran kustom yang memungkinkan tindakan importImage).
Registri dapat berada di langganan Azure yang sama atau berbeda di penyewa Direktori Aktif yang sama.
Akses publik ke registri sumber mungkin dinonaktifkan. Jika akses publik dinonaktifkan, tentukan registri sumber berdasarkan ID sumber daya, bukan dengan nama server login registri.
Registri sumber dan/atau registri target dengan titik akhir privat atau aturan firewall registri harus memastikan registri terbatas memungkinkan layanan tepercaya untuk mengakses jaringan.
Mengimpor dari registri dalam langganan yang sama
Misalnya, mengimpor citra aci-helloworld:latest
dari registri sumber mysourceregistry ke myregistry dalam langganan Azure yang sama.
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld:latest \
--image aci-helloworld:latest
Contoh berikut mengimpor citra aci-helloworld:latest
ke myregistry dari registri sumber mysourceregistry di mana akses ke titik akhir publik registri dinonaktifkan. Berikan ID sumber daya registri sumber dengan parameter --registry
. Perhatikan bahwa parameter --source
hanya menentukan repositori dan tag sumber, bukan nama server login registri.
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
Contoh berikut mengimpor citra dengan manifes digest (sha-256 hash, dinyatakan sebagai sha256:...
) bukan dengan tag:
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg
Mengimpor dari registri dalam langganan berbeda
Catatan
Untuk mengimpor gambar dari satu registri ke registri lain, registri sumber dan target harus memastikan bahwa kedua wilayah terdaftar untuk Azure Container Registry (ACR) di bawah penyedia sumber daya langganan.
Dalam contoh berikut, mysourceregistry berada dalam langganan yang berbeda dari myregistry di penyewa Direktori Aktif yang sama. Berikan ID sumber daya registri sumber dengan parameter --registry
. Perhatikan bahwa parameter --source
hanya menentukan repositori dan tag sumber, bukan nama server login registri.
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
Mengimpor dari registri menggunakan informasi masuk perwakilan layanan
Untuk mengimpor dari registri yang tidak dapat Anda akses menggunakan izin Direktori Aktif terintegrasi, Anda dapat menggunakan informsi masuk perwakilan layanan (jika tersedia) ke registri sumber. Berikan appID dan kata sandi perwakilan layanan Direktori Aktif yang memiliki akses ACRPull ke registri sumber. Menggunakan perwakilan layanan berguna untuk sistem build dan sistem tanpa pengawasan lainnya yang perlu mengimpor citra ke registri Anda.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Mengimpor dari registri kontainer Azure di penyewa AD yang berbeda
Untuk mengimpor dari registri kontainer Azure di penyewa Microsoft Entra yang berbeda, tentukan registri sumber dengan nama server masuk, dan berikan kredensial yang memungkinkan akses tarik ke registri.
Impor lintas penyewa dengan nama pengguna dan kata sandi
Misalnya, gunakan token dan kata sandi tercakup repositori, atau APPID dan kata sandi perwakilan layanan Direktori Aktif yang memiliki akses ACRPull ke registri sumber.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Impor lintas penyewa dengan token akses
Untuk mengakses registri sumber menggunakan identitas di penyewa sumber yang memiliki izin registri, Anda bisa mendapatkan token akses:
# 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
Di penyewa target, lulus token akses sebagai kata sandi ke perintah az acr import
. Registri sumber menentukan nama server masuk. Perhatikan bahwa tidak ada nama pengguna yang diperlukan dalam perintah ini:
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--password <access-token>
Catatan
Lintas penyewa tidak berfungsi di seluruh cloud. Impor lintas penyewa melalui titik akhir privat juga tidak didukung.
Mengimpor dari registri kontainer pribadi non-Azure
Impor citra dari registri privat non-Azure dengan menentukan informasi masuk yang memungkinkan akses penarikan ke registri. Misalnya, tarik citra dari registri Docker pribadi:
az acr import \
--name myregistry \
--source docker.io/sourcerepo/sourceimage:tag \
--image sourceimage:tag \
--username <username> \
--password <password>
Langkah berikutnya
Dalam artikel ini, Anda belajar tentang mengimpor citra kontainer ke registri kontainer Azure dari registri publik atau registri privat lainnya.
- Untuk opsi impor citra tambahan, lihat referensi perintah impor az acr.
Impor gambar dapat membantu Anda memindahkan konten ke registri kontainer di wilayah Azure, langganan, atau penyewa Microsoft Entra yang berbeda. Untuk informasi selengkapnya, lihat Memindahkan registri kontainer secara manual ke wilayah lain.
Nonaktifkan ekspor artefak dari registri kontainer yang dibatasi jaringan.