Memecahkan masalah login registri

Artikel ini membantu Anda memecahkan masalah yang mungkin Anda temui saat masuk ke registri kontainer Azure.

Gejala

Dapat mencakup satu atau lebih hal berikut:

  • Tidak dapat masuk ke registri menggunakan docker login, az acr login, atau keduanya
  • Tidak dapat masuk ke registri dan Anda menerima kesalahan unauthorized: authentication required atau unauthorized: Application not registered with AAD
  • Tidak dapat masuk ke registri dan Anda menerima kesalahan Azure CLI Could not connect to the registry login server
  • Tidak dapat mendorong atau menarik gambar dan Anda menerima kesalahan Docker unauthorized: authentication required
  • Tidak dapat mengakses registri menggunakan az acr login dan Anda menerima kesalahan CONNECTIVITY_REFRESH_TOKEN_ERROR. Access to registry was denied. Response code: 403. Unable to get admin user credentials with message: Admin user is disabled. Unable to authenticate using AAD or admin login credentials.
  • Tidak dapat mengakses registri dari Azure Kubernetes Service, Azure DevOps, atau layanan Azure lainnya
  • Tidak dapat mengakses registri dan Anda menerima kesalahan Error response from daemon: login attempt failed with status: 403 Forbidden - Lihat Memecahkan masalah jaringan dengan registri
  • Tidak dapat mengakses atau melihat pengaturan registri di portal Azure atau mengelola registri menggunakan Azure CLI

Penyebab

  • Docker tidak dikonfigurasi dengan benar di lingkungan Anda - solusi
  • Registri tidak ada atau namanya salah - solusi
  • Kredensial registri tidak valid - solusi
  • Akses publik registri dinonaktifkan. Aturan akses jaringan publik pada registri mencegah akses - solusi
  • Kredensial tidak diotorisasi untuk operasi dorong, tarik, atau Azure Resource Manager - solusi
  • Kredensial kedaluwarsa - solusi

Diagnosis lebih lanjut

Jalankan perintah az acr check-health untuk mendapatkan informasi selengkapnya tentang kesehatan lingkungan registri dan akses opsional ke registri target. Misalnya, diagnosis kesalahan konfigurasi Docker atau masalah login Microsoft Entra.

Lihat Memeriksa kesehatan registri kontainer Azure untuk contoh perintah. Jika kesalahan dilaporkan, tinjau referensi kesalahan dan bagian berikut untuk solusi yang disarankan.

Ikuti instruksi dari dokumen dukungan AKS jika Anda gagal menarik gambar dari ACR ke kluster AKS.

Catatan

Beberapa kesalahan autentikasi atau otorisasi juga dapat terjadi jika ada firewall atau konfigurasi jaringan yang mencegah akses registri. Lihat Memecahkan masalah jaringan dengan registri.

Potensi solusi

Periksa konfigurasi Docker

Sebagian besar alur autentikasi Azure Container Registry memerlukan penginstalan Docker lokal sehingga Anda dapat mengautentikasi dengan registri Anda untuk operasi seperti mendorong dan menarik gambar. Pastikan bahwa klien dan daemon Docker CLI (Mesin Docker) berjalan di lingkungan Anda. Anda memerlukan klien Docker versi 18.03 atau yang lebih baru.

Tautan terkait:

Tentukan nama registri yang benar

Saat menggunakan docker login, berikan nama server login lengkap dari registri, seperti myregistry.azurecr.io. Pastikan Anda hanya menggunakan huruf kecil. Contoh:

docker login myregistry.azurecr.io

Saat menggunakan az acr login dengan identitas Microsoft Entra, pertama-tama masuk ke Azure CLI, lalu tentukan nama sumber daya Azure dari registri. Nama sumber daya adalah nama yang disediakan ketika registri dibuat, seperti myregistry (tanpa akhiran domain). Contoh:

az acr login --name myregistry

Tautan terkait:

Konfirmasi kredensial untuk mengakses registri

Periksa validitas kredensial yang Anda gunakan untuk skenario Anda, atau diberikan kepada Anda oleh pemilik registri. Kemungkinan masalah:

  • Jika menggunakan perwakilan layanan Direktori Aktif, pastikan Anda menggunakan kredensial yang benar di penyewa Direktori Aktif:
    • Nama pengguna - ID aplikasi perwakilan layanan (juga disebut ID klien)
    • Kata sandi - kata sandi perwakilan layanan (juga disebut rahasia klien)
  • Jika menggunakan layanan Azure seperti Azure Kubernetes Service atau Azure DevOps untuk mengakses registri, konfirmasikan konfigurasi registri untuk layanan Anda.
  • Jika Anda menjalankan az acr login dengan opsi --expose-token, yang memungkinkan login registri tanpa menggunakan daemon Docker, pastikan Anda mengautentikasi dengan nama pengguna 00000000-0000-0000-0000-000000000000.
  • Jika registri Anda dikonfigurasi untuk akses tarik anonim, kredensial Docker yang ada yang disimpan dari login Docker sebelumnya dapat mencegah akses anonim. Jalankan docker logout sebelum mencoba operasi tarik anonim pada registri.

Tautan terkait:

Konfirmasi apakah kredensial diotorisasi untuk mengakses registri

Konfirmasikan izin registri yang terkait dengan kredensial, seperti AcrPull peran Azure untuk menarik gambar dari registri, atau peran AcrPush untuk mendorong gambar.

Akses ke registri di portal atau manajemen registri menggunakan Azure CLI memerlukan setidaknya peran Reader atau izin yang setara untuk melakukan operasi Azure Resource Manager.

Jika izin Anda baru-baru ini diubah untuk mengizinkan akses registri melalui portal, Anda mungkin perlu mencoba sesi incognito atau pribadi di browser Anda untuk menghindari cache atau cookie browser yang kedaluwarsa.

Anda atau pemilik registri harus memiliki hak istimewa yang memadai dalam langganan untuk menambahkan atau menghapus penetapan peran.

Tautan terkait:

Periksa apakah kredensial tidak kedaluwarsa

Token dan kredensial Active Directory dapat kedaluwarsa setelah periode yang ditentukan, untuk mencegah akses registri. Untuk mengaktifkan akses, kredensial mungkin perlu direset atau diregenerasi.

  • Jika menggunakan identitas AD perorangan, identitas terkelola, atau prinsip layanan untuk login registri, token AD akan kedaluwarsa setelah 3 jam. Masuk lagi ke registri.
  • Jika menggunakan perwakilan layanan AD dengan rahasia klien yang kedaluwarsa, pemilik langganan atau administrator akun perlu mereset kredensial atau menghasilkan perwakilan layanan baru.
  • Jika menggunakan token yang tercakup dalam repositori, pemilik registri mungkin perlu mengatur ulang kata sandi atau menghasilkan token baru.

Tautan terkait:

Pemecahan masalah tingkat lanjut

Jika kumpulan log sumber daya diaktifkan di registri, tinjau log ContainerRegistryLoginEvents. Log ini menyimpan peristiwa dan status autentikasi, termasuk identitas dan alamat IP yang masuk. Kueri log untuk kegagalan autentikasi registri.

Tautan terkait:

Langkah berikutnya

Jika masalah Anda tidak terselesaikan di sini, lihat opsi berikut.