Ringkasan Container Registry

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

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

Untuk mengetahui 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 perlu menggunakan registry pribadi seperti Artifact Registry atau Container Registry.

Anda dapat mengakses registry melalui endpoint HTTPS yang aman, yang memungkinkan Anda mengirim, 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 repositori yang lebih terpisah dengan kebijakan akses terpisah atau menyimpan image di region, bukan multi-region, gunakan Artifact Registry.

Registry di Container Registry diberi nama berdasarkan host dan project ID. Untuk menggunakan image (misalnya push, pull, delete), identifikasi image menggunakan format berikut:

HOSTNAME/PROJECT-ID/IMAGE:TAG

atau

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

dengan:

  • HOSTNAME adalah lokasi penyimpanan image:

    • gcr.io saat ini menghosting gambar di Amerika Serikat, tetapi lokasinya dapat berubah pada masa mendatang
    • us.gcr.io menghosting gambar di Amerika Serikat, dalam 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 mendorong 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 project, semua registry dengan nama host yang sama menggunakan satu bucket penyimpanan.

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

  • IMAGE adalah nama image. Nama ini dapat berbeda dengan nama lokal gambar. Di konsol Google Cloud, registry project tercantum berdasarkan nama image. Setiap repositori dapat menyimpan beberapa image dengan nama yang sama. Misalnya, bucket tersebut dapat menyimpan versi gambar yang berbeda-beda yang disebut "gambar-saya".

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

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

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

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

Mengatur gambar dengan repositori

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

Di Container Registry, repositori adalah bantuan organisasi. Folder ini 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 host us.gcr.io dalam project builds:

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 pengguna memiliki akses tulis ke host us.gcr.io dalam project builds, mereka memiliki akses tulis ke jalur apa pun di us.gcr.io/builds karena semua image berada dalam bucket penyimpanan yang sama dan Anda tidak dapat membatasi akses di level 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 gambar, dan gambar ini 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 ke gambar. Misalnya, gambar mungkin memiliki tag v1.5 untuk nomor versi dan release-candidate untuk menunjukkan kesiapan pengujian akhir.
  • Ringkasan dibuat secara otomatis, unik untuk versi gambar, dan memiliki bentuk @IMAGE-DIGEST, dengan IMAGE-DIGEST adalah nilai hash sha256 dari konten gambar.

Untuk mengidentifikasi versi image my-image tertentu:

  • tambahkan tag gambar:

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

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

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

Di konsol Google Cloud, pada layar Images, kolom Tags mencantumkan tag image. Klik versi gambar untuk melihat metadata, termasuk Ringkasan gambar.

Lihat Memberi Tag pada Gambar untuk mengetahui cara mengubah tag.

Project cakupan domain

Jika project Anda dicakup ke domain, 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 ketika 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 gambar.

Misalnya, URL berikut ditautkan ke registry publik di konsol Google Cloud:

Format image container

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

Jika Anda ingin menyimpan image dan jenis artefak lainnya secara terpusat, sebaiknya gunakan 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 gambar apa pun di bucket penyimpanan host. Jika Anda memerlukan kontrol akses yang lebih terperinci, pertimbangkan untuk menggunakan Artifact Registry. Artifact Registry menyediakan kontrol akses level repositori.

Secara default, Pemilik dan Editor project memiliki izin push dan pull untuk bucket Container Registry project tersebut. Project Viewer hanya memiliki izin pull.

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

Lihat pemberitahuan penghentian Container Registry untuk mengetahui informasi tentang rencana untuk memindahkan metadata image dari Cloud Storage ke database backend berperforma tinggi.

Autentikasi

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 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 untuk mengonfigurasi kredensial Container Registry untuk digunakan dengan Docker.

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

Untuk 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 untuk Container Registry guna menjalankan tugas layanannya pada project Anda. Google mengelola akun ini, tetapi akun ini khusus untuk project 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 informasi selengkapnya tentang akun layanan ini dan izinnya, lihat Akun layanan Container Registry.

Cache pull-through

Registry mirror.gcr.io menyimpan cache image publik yang sering diminta dari Docker Hub.

Menggunakan image yang di-cache dapat mempercepat pengambilan 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 Mengambil 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 mendorong dan menarik image Container Registry berdasarkan cakupan Cloud Storage di 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 dengan lancar dengan layanan Google Cloud. Misalnya, Cloud Build dapat mengirim image ke dan mengambil 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, menarik, 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 menyertakan Container Registry.