All Products
Search
Document Center

Container Registry:Diagnostik pembuatan gambar

Last Updated:Mar 27, 2026

Ketika pembuatan gambar gagal, output error umumnya menunjukkan gejala, bukan akar penyebabnya. Diagnostik build menganalisis tugas build Anda untuk mengungkap akar permasalahan, menandai potensi risiko, dan mengidentifikasi peluang optimasi—menggabungkan aturan ahli dengan model bahasa besar Tongyi Qianwen (LLM) guna memberikan saran perbaikan yang tepat sasaran.

Penting

Saat menggunakan diagnostik build, Alibaba Cloud mengumpulkan data dari repositori gambar kontainer Anda, termasuk informasi repositori, konfigurasi build, log tugas build, dan riwayat build. Jangan menyimpan data sensitif dalam konfigurasi build atau mencetak data sensitif ke log build. Untuk detail selengkapnya, lihat Catatan penggunaan.

Cara kerja

Diagnostik build berjalan dalam tiga tahap:

  1. Pra-pemrosesan: Mengumpulkan status instans, konfigurasi repositori, aturan build, dan log build untuk mendeteksi pengecualian secara cepat.

  2. Deteksi aturan: Menganalisis data yang dikumpulkan untuk mengidentifikasi pengecualian, potensi risiko, dan peluang optimasi.

  3. Analisis akar permasalahan: Menggunakan data yang dikumpulkan dan hasil deteksi untuk menentukan akar penyebab setiap masalah serta menghasilkan saran perbaikan.

image

Hasil diagnosis terbagi menjadi dua kategori:

  • Item yang perlu diperbaiki: Akar penyebab pengecualian, saran perbaikan, dan detail lokasi pengecualian.

  • Diagnostik AI: Analisis mendalam terhadap instruksi build atau item konfigurasi, dengan saran optimasi komprehensif yang dihasilkan oleh LLM.

Jalankan diagnostik build

  1. Pada halaman Image Build Diagnostics, klik Diagnostics. Pada panel Select Image Build Task, pilih tugas build yang akan didiagnosis:

    • Namespaces: Namespace tempat tugas build tersebut berada.

    • Image Repositories: Repositori tempat tugas build tersebut berada.

    • Image Build Task ID: ID tugas build tersebut.

  2. Baca catatan penggunaan, pilih I understand and agree, lalu klik Initiate Diagnostics.

  3. Setelah diagnosis selesai, tinjau hasilnya dan terapkan saran perbaikan. Gunakan Referensi di bawah ini untuk memahami setiap temuan.

Referensi aturan diagnostik

Tabel berikut mencantumkan semua aturan diagnostik, akar penyebabnya, serta saran perbaikannya.

Grup aturan Nama aturan Akar penyebab Saran perbaikan
Deteksi sintaksis Dockerfile Definisi port tidak valid Format port atau protokol pada instruksi EXPOSE salah. Pastikan range port berada di antara 0–65535 dan protokolnya adalah TCP atau UDP.
Deteksi sintaksis Dockerfile Instruksi Copy: tujuan bukan direktori Saat menyalin beberapa file, jalur tujuan bukan direktori. Gunakan jalur direktori sebagai tujuan.
Deteksi sintaksis Dockerfile Tahap build tidak ada Nama tahap pada instruksi COPY tidak merujuk ke tahap yang telah didefinisikan. Gunakan nama tahap yang telah didefinisikan sebelumnya dalam Dockerfile.
Deteksi sintaksis Dockerfile Nama tahap duplikat Dua atau lebih tahap build memiliki nama yang sama. Berikan nama unik untuk setiap tahap.
Deteksi sintaksis Dockerfile Instruksi pertama tidak valid Instruksi pertama bukan FROM atau ARG. Mulailah Dockerfile dengan instruksi FROM atau ARG.
Deteksi sintaksis Dockerfile Item error kompilasi Dockerfile mengandung error pra-kompilasi. Perbaiki kesalahan sintaksis, atau tunggu saran perbaikan dari analisis akar permasalahan.
Deteksi sintaksis Dockerfile Item peringatan kompilasi Dockerfile memiliki peringatan pra-kompilasi. Tinjau instruksi yang ditandai—instruksi tersebut mungkin berjalan dengan cara yang tidak diharapkan.
Deteksi tag gambar Tag gambar dasar tidak ditentukan Instruksi FROM tidak menentukan tag. Tentukan tag gambar tertentu untuk menghindari penarikan versi yang tidak diinginkan pada build mendatang.
Deteksi tag gambar Gambar dasar tidak ada Nama gambar dasar salah atau gambarnya tidak tersedia. Periksa nama gambar atau pilih gambar dasar lain.
Deteksi error waktu proses Error eksekusi perintah Sebuah perintah dalam Dockerfile keluar dengan error. Pastikan perintah dalam Dockerfile Anda benar, atau tunggu saran perbaikan dari analisis akar permasalahan.
Deteksi error waktu proses Perintah tidak ada Perintah yang akan dijalankan tidak tersedia dalam gambar dasar. Pastikan setiap perintah yang dijalankan Dockerfile tersedia dalam gambar dasar.
Deteksi error waktu proses File tidak ada Instruksi COPY merujuk ke file atau direktori yang tidak ada. Pastikan jalur file atau direktori pada instruksi COPY benar.
Deteksi instruksi tidak valid Perintah tidak valid Instruksi seperti Kill atau Shutdown digunakan selama proses build. Hapus instruksi Kill, Shutdown, dan instruksi serupa—karena dapat menyebabkan masalah keamanan dan stabilitas.
Deteksi instruksi tidak valid Perintah sudo sudo digunakan selama proses build. Hapus sudo dari proses build. Penggunaan sudo selama build menghasilkan perilaku yang tidak dapat diprediksi karena peningkatan hak istimewa tidak bekerja sama di dalam konteks build kontainer.
Deteksi error pada tahap pengunggahan Konflik tag Tag gambar yang akan didorong bertentangan dengan tag yang sudah ada di repositori. Nonaktifkan fitur tag gambar immutable untuk repositori tersebut, atau hindari mendorong ke tag yang sama berulang kali.
Optimasi ukuran gambar apt-get: update dan install terpisah apt update dan apt install berada dalam instruksi RUN yang terpisah. Gabungkan apt-get update dan apt-get install dalam satu instruksi RUN. Docker menyimpan cache setiap layer RUN secara independen. Jika apt-get update dijalankan dalam satu layer dan apt-get install di layer lain, build berikutnya dapat menggunakan kembali layer apt-get update yang telah di-cache saat mengambil paket—sehingga menghasilkan versi paket yang kedaluwarsa dan ukuran gambar yang lebih besar.
Optimasi ukuran gambar apt-get: tidak menggunakan --no-install-recommends apt-get install tidak menyertakan flag --no-install-recommends. Tambahkan --no-install-recommends ke apt-get install untuk melewati paket rekomendasi opsional dan menjaga ukuran gambar tetap kecil.
Optimasi ukuran gambar Cache paket tidak dihapus Cache manajer paket tidak dihapus setelah instalasi. Hapus cache dalam instruksi RUN yang sama dengan instalasi paket: gunakan apt-get clean pada Ubuntu, apk add --no-cache atau rm -rf /var/cache/apk/* pada Alpine, dan yum clean pada CentOS. Menghapus cache dalam instruksi yang sama memastikan cache tidak disimpan ke dalam layer gambar.
Optimasi ukuran gambar Build multi-tahap tidak digunakan Kompilasi dilakukan pada tahap gambar akhir. Pindahkan kompilasi ke tahap build terpisah dan salin hanya output build ke dalam gambar bisnis. Hal ini menjaga rantai alat kompilator dan artefak antara agar tidak masuk ke dalam gambar produksi.
Optimasi ukuran gambar Paket terkompresi tidak dihapus Arsip yang diunduh selama build tidak dihapus. Gabungkan langkah unduh, ekstrak, dan hapus dalam satu instruksi RUN sehingga arsip tersebut tidak disimpan ke dalam layer gambar.
Optimasi instruksi build Jalur WORKDIR relatif WORKDIR menggunakan jalur relatif. Gunakan jalur mutlak untuk WORKDIR. Jalur relatif diselesaikan berdasarkan direktori kerja saat ini dari gambar dasar, yang dapat berubah antar versi gambar dasar dan menyebabkan kegagalan build yang tidak terduga.
Optimasi instruksi build Pengguna root selama build Build beralih ke pengguna root. Hapus instruksi yang beralih ke root. Menjalankan sebagai root selama build dapat menimbulkan risiko keamanan pada waktu proses kontainer.
Optimasi instruksi build cd digunakan alih-alih WORKDIR cd digunakan untuk mengubah direktori selama build. Ganti cd dengan instruksi WORKDIR. Perubahan direktori yang dilakukan dengan cd dalam langkah RUN tidak berlanjut ke langkah berikutnya atau ke kontainer saat runtime—hanya WORKDIR yang mengubah direktori kerja lintas layer.
Optimasi instruksi build Beberapa instruksi CMD atau ENTRYPOINT Lebih dari satu instruksi CMD atau ENTRYPOINT muncul dalam Dockerfile. Hanya instruksi CMD atau ENTRYPOINT terakhir yang berlaku. Hapus semua instruksi kecuali instruksi akhir yang dimaksudkan.