Ringkasan Container Registry

Container Registry adalah layanan lama untuk menyimpan image container pribadi di Google Cloud.

Layanan tidak digunakan lagi. Anda dapat memindahkan image yang ada ke Artifact Registry dan terus mengaksesnya menggunakan domain gcr.io. Mulai 15 Mei 2024, project tanpa penggunaan Container Registry sebelumnya hanya akan menghosting image untuk domain gcr.io di Artifact Registry.

Untuk perbandingan antara Container Registry dan Artifact Registry, serta informasi tentang transisi dari Container Registry ke Artifact Registry, lihat Bertransisi dari Container Registry.

Menangani gambar

Banyak orang menggunakan Docker Hub sebagai registry pusat untuk menyimpan image Docker publik, tetapi untuk mengontrol akses ke image Anda, Anda perlu menggunakan registry pribadi seperti Artifact Registry atau Container Registry.

Anda dapat mengakses registry melalui endpoint HTTPS yang aman, yang memungkinkan Anda mendorong, mengambil, dan mengelola image dari sistem, instance VM, atau hardware Anda sendiri.

Registry

Anda dapat membuat hingga empat host multi-regional di setiap project Google Cloud dengan Container Registry. Jika Anda ingin membuat lebih banyak repositori terpisah dengan kebijakan akses terpisah atau menyimpan image di region, bukan multi-region, gunakan Artifact Registry.

Registry di Container Registry diberi nama oleh host dan ID project. Untuk menggunakan gambar (misalnya, dorong, tarik, hapus), identifikasi gambar menggunakan format berikut:

HOSTNAME/PROJECT-ID/IMAGE:TAG

atau

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

dengan:

  • HOSTNAME adalah lokasi tempat gambar disimpan:

    • gcr.io saat ini menghosting gambar di Amerika Serikat, tetapi lokasinya dapat berubah pada masa mendatang
    • us.gcr.io menghosting gambar di Amerika Serikat, di bucket penyimpanan terpisah dari gambar yang dihosting oleh gcr.io
    • eu.gcr.io menghosting gambar dalam negara anggota Uni Eropa
    • asia.gcr.io menghosting gambar di Asia

    Lokasi ini sesuai dengan multi-region untuk bucket penyimpanan Cloud Storage. Saat Anda mengirim image ke registry dengan nama host baru, Container Registry akan membuat bucket penyimpanan di multi-region yang ditentukan. Bucket ini adalah penyimpanan dasar untuk registry. Dalam sebuah project, semua registry dengan nama host yang sama berbagi satu bucket penyimpanan.

  • PROJECT-ID adalah project ID Google Cloud Console Anda. Jika project ID Anda berisi titik dua (:), lihat Project cakupan domain di bawah.

  • IMAGE adalah nama gambar. Nama ini bisa berbeda dari nama lokal gambar. Di Google Cloud Console, registry project dicantumkan berdasarkan nama image. Setiap repositori dapat menyimpan beberapa image dengan nama yang sama. Misalnya, kode ini mungkin menyimpan versi gambar yang berbeda yang disebut "my-image".

  • Dengan menambahkan :TAG atau @IMAGE-DIGEST di bagian akhir, Anda dapat membedakan versi tertentu dari gambar, tetapi juga bersifat opsional. Jika Anda tidak menentukan tag atau ringkasan, Container Registry akan mencari image dengan tag default latest. Lihat Versi image dalam registry di bawah.

Untuk image my-image dalam gcr.io/PROJECT-ID registry, Anda menggunakan format ini untuk mengirim atau menarik image:

gcr.io/PROJECT-ID/my-image:tag1

dengan PROJECT-ID adalah project ID Google Cloud Console Anda.

Mengatur image dengan repositori

Anda dapat mengelompokkan image terkait di repositori dalam registry. Saat memberi tag, mendorong, atau menarik image, Anda akan menentukan nama repositori di bagian project di jalur image.

Di Container Registry, repositori adalah bantuan organisasi. Folder berfungsi seperti folder logis di jalur image, tetapi tidak mencerminkan struktur sistem file yang sebenarnya atau mendukung kontrol akses yang lebih terperinci.

Pertimbangkan gambar berikut yang disimpan di us.gcr.io host dalam builds project:

us.gcr.io/builds/product1/dev/product1-app:beta-2.0
us.gcr.io/builds/product1/stable/product1:1.0
us.gcr.io/builds/product2/dev/product2:alpha
us.gcr.io/builds/product2/stable/product2:1.0

Jika memiliki akses tulis ke host us.gcr.io di project builds, pengguna tersebut memiliki akses tulis ke jalur apa pun pada us.gcr.io/builds karena semua gambar berada di bucket penyimpanan yang sama, dan Anda tidak dapat membatasi akses di tingkat repositori atau image.

Jika memerlukan kontrol akses yang lebih terperinci, Anda dapat menggunakan Artifact Registry. Di Artifact Registry, repositori adalah resource terpisah, sehingga Anda dapat menerapkan kebijakan IAM terpisah ke repositori seperti us-docker.pkg.dev/builds/product1 dan us-docker.pkg.dev/builds/product2.

Versi image dalam registry

Registry dapat berisi banyak image, dan image tersebut mungkin memiliki versi yang berbeda. Untuk mengidentifikasi versi image tertentu dalam registry, Anda dapat menentukan tag atau ringkasan image.

  • Tag berfungsi sebagai label. Anda dapat menerapkan beberapa tag pada gambar. Misalnya, image mungkin memiliki tag v1.5 untuk nomor versi dan release-candidate untuk menunjukkan kesiapan pengujian akhir.
  • Ringkasan dibuat secara otomatis, bersifat unik untuk versi gambar, dan memiliki bentuk @IMAGE-DIGEST, dengan IMAGE-DIGEST adalah nilai hash sha256 dari konten gambar.

Untuk mengidentifikasi versi tertentu dari gambar my-image:

  • tambahkan tag gambar:

    gcr.io/PROJECT-ID/my-image:tag1
    
  • atau, tambahkan intisari gambar:

    gcr.io/PROJECT-ID/my-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

dengan PROJECT-ID adalah project ID Google Cloud Console Anda. Jika project ID Anda berisi titik dua (:), lihat Project cakupan domain di bawah.

Di Konsol Google Cloud, pada layar Gambar, kolom Tag mencantumkan tag gambar. Klik versi image untuk melihat metadata, termasuk Image digest.

Lihat Memberi Tag pada Gambar untuk mengetahui cara mengubah tag.

Project cakupan domain

Jika project tercakup dalam domain Anda, project ID akan menyertakan nama domain yang diikuti dengan titik dua (:). Karena cara Docker memperlakukan titik dua, Anda harus mengganti karakter titik dua dengan garis miring saat menentukan ringkasan image di Container Registry. Identifikasi gambar dalam jenis project ini menggunakan format berikut:

HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE

Misalnya, project dengan ID example.com:my-project dapat memiliki gambar berikut:

gcr.io/example.com/my-project/image-name

Nama registry sebagai URL

URL https://HOSTNAME/PROJECT-ID/IMAGE adalah URL untuk gambar di Konsol Google Cloud. Setiap pengguna terautentikasi yang memiliki izin untuk mengakses host registry dapat menggunakan link untuk melihat gambar apa pun yang disimpannya. Lihat Registry untuk mengetahui detail tentang format jalur image.

Misalnya, URL berikut tertaut ke registry publik di Google Cloud Console:

Format image container

Container Registry mendukung format image Docker Image Manifest V2 dan OCI. Untuk informasi selengkapnya, lihat Format Image Container.

Jika Anda ingin menyimpan image dan jenis artefak lainnya secara terpusat, pertimbangkan untuk menggunakan Artifact Registry, bukan Container Registry.

Kontrol akses

Container Registry menyimpan tag dan file lapisannya untuk image container di bucket Cloud Storage dalam project yang sama dengan registry. Akses ke bucket dikonfigurasi menggunakan setelan Identity and Access Management (IAM) Cloud Storage.

Pengguna yang memiliki akses ke host registry dapat mengakses image apa pun di bucket penyimpanan host. Jika Anda memerlukan kontrol akses yang lebih terperinci, pertimbangkan untuk menggunakan Artifact Registry. Artifact Registry menyediakan kontrol akses tingkat repositori.

Secara default, Pemilik dan Editor project memiliki izin push dan pull untuk bucket Container Registry project tersebut. {i>Project viewer<i} hanya memiliki izin akses pull.

Untuk informasi selengkapnya tentang izin Container Registry, lihat Mengonfigurasi kontrol akses.

Baca pemberitahuan penghentian Container Registry untuk mengetahui informasi tentang rencana pemindahan metadata gambar dari Cloud Storage ke database backend berperforma tinggi.

Authentication

Sebelum dapat mengirim atau mengambil image, Anda harus mengonfigurasi autentikasi. Anda dapat mengonfigurasi Docker agar menggunakan Google Cloud CLI untuk mengautentikasi permintaan ke Container Registry. Container Registry juga mendukung metode autentikasi lanjutan yang menggunakan token akses atau file kunci JSON.

Helper kredensial Docker

Docker memerlukan akses ke Container Registry untuk mengirim dan mengambil image. Anda dapat menggunakan alat command line helper kredensial Docker guna mengonfigurasi kredensial Container Registry untuk digunakan dengan Docker.

Helper kredensial mengambil kredensial Container Registry Anda, baik secara otomatis maupun dari lokasi yang ditentukan menggunakan flag --token-source-nya, lalu menulisnya ke file konfigurasi Docker. Dengan cara ini, Anda dapat menggunakan alat command line Docker, docker, untuk berinteraksi langsung dengan Container Registry.

Untuk mengetahui informasi selengkapnya, lihat Autentikasi Lanjutan.

Akun layanan Container Registry

Saat Anda mengaktifkan Container Registry API, Container Registry akan menambahkan akun layanan ke project Anda. Akun layanan ini memiliki ID berikut:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Akun layanan Container Registry ini dirancang khusus agar Container Registry dapat menjalankan tugas layanannya pada project Anda. Google mengelola akun ini, tetapi akun ini khusus untuk proyek Anda.

Jika Anda menghapus akun layanan ini atau mengubah izinnya, fitur Container Registry tertentu tidak akan berfungsi dengan benar. Anda tidak boleh mengubah peran atau menghapus akun.

Untuk mengetahui informasi selengkapnya tentang akun layanan ini dan izinnya, lihat akun layanan Container Registry.

Cache pull-through

Cache registry mirror.gcr.io sering meminta image publik dari Docker Hub.

Menggunakan image yang di-cache dapat mempercepat pull dari Docker Hub. Klien Anda selalu memeriksa salinan image Docker Hub yang di-cache sebelum mencoba mengambilnya langsung dari Docker Hub.

Untuk informasi selengkapnya, lihat Menarik image Docker Hub yang di-cache.

Notifikasi

Anda dapat menggunakan Pub/Sub untuk mendapatkan notifikasi tentang perubahan pada image penampung.

Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Notifikasi Pub/Sub.

Menggunakan Container Registry dengan Google Cloud

Instance Compute Engine dan cluster Google Kubernetes Engine dapat mengirim dan menarik image Container Registry berdasarkan cakupan Cloud Storage pada instance. Lihat Menggunakan Container Registry dengan Google Cloud.

Image yang disimpan di Container Registry dapat di-deploy ke lingkungan fleksibel App Engine.

Integrasi fitur continuous delivery

Container Registry berfungsi dengan sistem continuous integration dan continuous delivery yang populer, termasuk Cloud Build dan alat pihak ketiga seperti Jenkins.

Container Registry terintegrasi secara lancar dengan layanan Google Cloud. Misalnya, Cloud Build dapat mengirim image ke dan menarik image dari host Container Registry dalam project yang sama secara default. Lingkungan runtime seperti Google Kubernetes Engine dan Cloud Run juga dapat mengambil image dari host registry dalam project yang sama secara default.

Atau, Anda dapat menggunakan alat pihak ketiga seperti Jenkins untuk mem-build, mengambil, dan mengirim image. Saat menggunakan alat pihak ketiga, Anda harus mengonfigurasi izin dan autentikasi untuk akun yang akan berinteraksi dengan Container Registry atas nama alat tersebut.

Untuk mempelajari contoh integrasi, lihat panduan teknis Google Cloud yang mencakup Container Registry.