Mengirim (mengupload) dan mengambil (mendownload) image adalah dua tugas Container Registry yang paling umum. Dokumen ini berfokus pada mendorong dan menarik image dengan Docker.
Jika Anda menggunakan Cloud Build, lihat dokumentasi Cloud Build untuk mengetahui informasi tentang cara mem-build dan mengirim container ke Container Registry.
Untuk mendapatkan petunjuk tentang cara mencantumkan, memberi tag, dan menghapus gambar, lihat Mengelola Gambar.
Sebelum memulai
Pastikan Anda memiliki:
Mengaktifkan Container Registry di project Anda.
Menambahkan registry
Anda dapat menambahkan registry Container Registry berikut ke project:
Nama host | Lokasi penyimpanan |
---|---|
gcr.io |
Menyimpan gambar di pusat data di Amerika Serikat |
asia.gcr.io |
Menyimpan gambar di pusat data di Asia |
eu.gcr.io |
Menyimpan gambar di pusat data dalam negara anggota Uni Eropa |
us.gcr.io |
Menyimpan gambar di pusat data di Amerika Serikat |
Pengiriman gambar pertama ke nama host akan memicu pembuatan registry dalam project dan bucket penyimpanan Cloud Storage yang sesuai. Push awal ini memerlukan izin lingkup project untuk membuat bucket penyimpanan.
Setelah host registry ada di project, Anda dapat mengonfigurasi izin di bucket penyimpanan untuk mengontrol akses ke image dalam registry.
Untuk menambahkan registry dan mengonfigurasi izin:
Pastikan Anda memiliki izin yang diperlukan. Anda harus memiliki peran Storage Admin (roles/storage.admin), atau peran khusus, atau peran standar dengan izin yang sama.
Untuk mengetahui petunjuk tentang cara memberikan peran Storage Admin di level project, baca dokumentasi IAM.
Mendorong gambar awal ke host. Misalnya, perintah berikut:
- Ambil image
busybox
dari Docker Hub - Beri tag pada image dengan jalur targetnya di Container Registry, termasuk host registry
gcr.io
dan project IDmy-project
- Mengirim image ke registry
docker pull busybox docker tag busybox gcr.io/my-project/busybox docker push gcr.io/my-project/busybox
- Ambil image
Container Registry menambahkan registry ke project Anda, membuat bucket penyimpanan untuk registry, dan menyimpan image.
Sekarang Anda dapat mengonfigurasi kontrol akses di bucket penyimpanan registry untuk memberikan akses registry kepada pengguna lain.
Mengirim image ke registry
Untuk mengirim image lokal apa pun ke Container Registry menggunakan Docker atau alat pihak ketiga lainnya, Anda harus memberinya tag dengan nama registry terlebih dahulu, lalu mengirim image tersebut.
Faktor berikut dapat memengaruhi upload gambar berukuran besar:
- Waktu upload
- Setiap permintaan yang dikirim ke Container Registry memiliki batas waktu tunggu 2 jam. Jika Anda melakukan autentikasi ke Container Registry menggunakan token akses, masa berlaku token akan berakhir setelah 60 menit. Jika Anda memperkirakan waktu upload lebih dari 60 menit, gunakan metode autentikasi lain.
- Ukuran gambar
- Container Registry menggunakan Cloud Storage untuk setiap penyimpanan dasar registry. Kuota dan batas Cloud Storage berlaku untuk setiap registry, termasuk ukuran maksimum 5 TB untuk objek di penyimpanan.
- Container Registry tidak mendukung upload potongan Docker. Beberapa alat mendukung upload gambar besar dengan upload potongan atau satu upload monolitik. Anda harus menggunakan upload monolitik untuk mengirim image ke Container Registry.
Izin yang diperlukan
Pengiriman image memerlukan salah satu peran Cloud Storage berikut, atau peran dengan izin yang sama:
- Mengirim image pertama ke registry di project Anda
Peran: Storage Admin (roles/storage.admin) di level project Google Cloud. Peran Pemilik yang telah ditetapkan mencakup izin ini.
Saat pertama kali mengirim image ke host registry di project Anda (seperti
gcr.io
), Container Registry akan membuat bucket penyimpanan untuk registry tersebut. Peran Storage Admin memiliki izin yang diperlukan untuk membuat bucket penyimpanan.- Mengirim image ke registry yang ada di project Anda
Peran: Storage Legacy Bucket Writer (roles/storage.legacyBucketWriter) di bucket penyimpanan registry.
Peran ini memiliki izin untuk mengirim dan mengambil image untuk host registry yang ada dalam project Anda. Misalnya, jika project Anda hanya berisi registry
gcr.io
, pengguna dengan peran Storage Legacy Bucket Writer dapat mengirim gambar kegcr.io
, tetapi tidak dapat mengirim gambar keasia.gcr.io
.
Untuk mengetahui informasi tentang cara memberikan izin ke registry, lihat Mengonfigurasi kontrol akses.
Memberi tag pada image lokal dengan nama registry
Untuk memberi tag pada gambar:
- Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.
Tentukan nama image di Container Registry:
Pilih nama host, yang menentukan lokasi tempat Anda akan menyimpan gambar.
gcr.io
menghosting gambar di pusat data di Amerika Serikat, tetapi lokasinya dapat berubah pada masa mendatangus.gcr.io
menghosting gambar di pusat data di Amerika Serikat, dalam bucket penyimpanan terpisah dari gambar yang dihosting olehgcr.io
eu.gcr.io
menghosting gambar di Uni Eropaasia.gcr.io
menghosting gambar di pusat data 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.
Di konsol, nama host gambar akan tercantum di bagian Lokasi.
Pilih nama image target, yang mungkin berbeda dengan nama image di komputer lokal Anda. Misalnya, image lokal mungkin bernama
web-image
, tetapi Anda ingin menyimpannya di Container Registry sebagaiweb-site
Gabungkan nama host, project ID Google Cloud Console, dan nama image target:
HOSTNAME/PROJECT-ID/TARGET-IMAGE
Perhatikan contoh berikut:
- Nama host:
gcr.io
- Project Google Cloud:
my-project
- Nama image target:
web-site
Dengan menggabungkan nama host, project, dan nama image target, Anda akan mendapatkan jalur image lengkap yang akan digunakan untuk pemberian tag:
gcr.io/my-project/web-site
Jika project ID Anda berisi titik dua (
:
), lihat Project cakupan domain.- Nama host:
Beri tag pada gambar lokal dengan nama dari langkah sebelumnya. Jika Anda ingin memberi label pada versi gambar ini dengan tag, sertakan nama tag tersebut.
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
Ganti kode berikut:
- SOURCE_IMAGE adalah nama gambar atau ID gambar lokal.
- HOSTNAME adalah host registry yang Anda pilih di langkah 2.
- PROJECT adalah project ID Google Cloud.
- TARGET-IMAGE adalah nama image saat disimpan di Container Registry.
- TAG adalah tag yang ingin Anda kaitkan dengan versi image ini.
Misalnya, perintah ini memberi tag pada image lokal
web-image
sebagaigcr.io/my-project/web-site
di Container Registry dengan tagv1.5
docker tag web-image gcr.io/my-project/web-site:v1.5
Jika Anda tidak menentukan tag, Docker akan menambahkan tag
latest
default. Karenalatest
adalah tag default, tag ini mewakili versi gambar yang terakhir diberi tag dengan taglatest
, dan bukan versi terbaru dari sebuah gambar.
Docker memberi tag pada image dengan nama image dan tag yang Anda tentukan dalam perintah.
Mengirim image yang diberi tag ke Container Registry
Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.
Kirim gambar yang diberi tag ke Container Registry:
Jalankan perintah berikut untuk mengirim image dengan tag tertentu:
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
Jika Anda menghilangkan
:TAG
, Docker akan mengirim versi gambar yang diberi tag denganlatest
.Misalnya, perintah ini mengirim image
gcr.io/my-project/web-site
dengan tagv1.5
:docker push gcr.io/my-project/web-site:v1.5
Saat Anda mengirim image ke host registry yang belum ada di project, Container Registry akan membuat bucket penyimpanan untuk host registry tersebut.
Untuk melihat gambar yang Anda dorong:
Buka Google Cloud Console untuk melihat registry dan image.
Jalankan
gcloud container images list-tags
untuk melihat tag gambar dan ringkasan yang dibuat secara otomatis:gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
Output perintahnya mirip dengan berikut ini:
DIGEST TAGS TIMESTAMP 44bde... test 2017-..-..
Mengambil image dari registry
Untuk mengambil image, diperlukan Storage Object Viewer untuk bucket penyimpanan registry, atau peran dengan izin yang sama.
Untuk mengambil dari Container Registry, gunakan perintah:
docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG
atau
docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST
dengan:
- HOSTNAME tercantum di bagian Location pada konsol. Ini adalah salah satu dari
empat opsi:
gcr.io
,us.gcr.io
,eu.gcr.io
, atauasia.gcr.io
. - PROJECT-ID adalah project ID Google Cloud Console Anda.
Jika project ID Anda berisi titik dua (
:
), lihat Project cakupan domain. - IMAGE adalah nama image di Container Registry.
- TAG adalah tag yang diterapkan pada gambar. Dalam registry, tag bersifat unik untuk image.
- IMAGE_DIGEST adalah nilai hash sha256 dari konten gambar. Di Google Cloud Console, klik gambar tertentu untuk melihat metadatanya. Ringkasan dicantumkan sebagai Ringkasan gambar.
Untuk mendapatkan perintah pull untuk image tertentu:
Klik nama image untuk membuka registry tertentu.
Di registry, centang kotak di samping versi image yang ingin Anda ambil.
Klik TAMPILKAN PERINTAH PULL di bagian atas halaman.
Salin perintah pull, yang mengidentifikasi gambar menggunakan tag atau ringkasan.
Langkah selanjutnya
- Pelajari cara mengelola gambar, termasuk menambahkan atau menghapus tag dan menghapus gambar.
- Pelajari cara mengonfigurasi kontrol akses.
- Baca selengkapnya tentang komponen dan fitur Container Registry.
- Jika Anda ingin menjalankan container di Compute Engine, pelajari container di Compute Engine.