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.
- Integrasikan registry dengan layanan CI/CD Google Cloud atau alat CI/CD Anda.
- Menyimpan image container dari Cloud Build.
- Men-deploy image container ke runtime Google Cloud, termasuk Google Kubernetes Engine, Cloud Run, Compute Engine, dan lingkungan fleksibel App Engine.
- Identity and Access Management menyediakan kredensial dan kontrol akses yang konsisten.
- Amankan supply chain software container Anda.
- Kelola metadata container dan pindai kerentanan container dengan Artifact Analysis.
- Terapkan kebijakan deployment dengan Otorisasi Biner.
- Lindungi registry di perimeter keamanan Kontrol Layanan VPC.
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 mendatangus.gcr.io
menghosting gambar di Amerika Serikat, dalam bucket penyimpanan terpisah dari gambar yang dihosting olehgcr.io
eu.gcr.io
menghosting gambar dalam negara anggota Uni Eropaasia.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 defaultlatest
. 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 danrelease-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.