Mengirim (mengupload) dan mengambil (mendownload) image adalah dua tugas Container Registry yang paling umum. Dokumen ini berfokus pada pengiriman dan pengambilan image dengan Docker.
Jika Anda menggunakan Cloud Build, lihat dokumentasi Cloud Build untuk mengetahui informasi tentang mem-build dan mengirim container ke Container Registry.
Untuk petunjuk tentang cara membuat daftar, 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:
Hostname | 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 |
Push image pertama ke nama host memicu pembuatan registry dalam project dan bucket penyimpanan Cloud Storage yang sesuai. Push awal ini memerlukan izin di seluruh project untuk membuat bucket penyimpanan.
Setelah host registry ada di project, Anda dapat mengonfigurasi izin di bucket penyimpanan untuk mengontrol akses ke image di registry.
Untuk menambahkan registry dan mengonfigurasi izin:
Pastikan Anda memiliki izin yang diperlukan. Anda harus memiliki peran Storage Admin (roles/storage.admin), atau peran kustom atau peran bawaan dengan izin yang sama.
Untuk mendapatkan petunjuk tentang cara memberikan peran Storage Admin di level project, baca dokumentasi IAM.
Kirim gambar awal ke host. Misalnya, perintah berikut:
- Mengambil image
busybox
dari Docker Hub - Beri tag pada image dengan jalur targetnya di Container Registry, termasuk
host registry
gcr.io
dan ID projectmy-project
- Mengirim image ke registry
docker pull busybox docker tag busybox gcr.io/my-project/busybox docker push gcr.io/my-project/busybox
- Mengambil 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 ke Container Registry menggunakan Docker atau alat pihak ketiga lainnya, Anda harus memberi tag terlebih dahulu dengan nama registry, lalu mengirim image.
Faktor berikut dapat memengaruhi upload untuk 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 akan melebihi 60 menit, gunakan metode autentikasi yang berbeda.
- Ukuran gambar
- Container Registry menggunakan Cloud Storage untuk setiap penyimpanan yang mendasari registry. Kuota dan batas Cloud Storage berlaku untuk setiap registry, termasuk ukuran maksimum 5 TB untuk objek dalam penyimpanan.
- Container Registry tidak mendukung upload terpisah Docker. Beberapa alat mendukung upload gambar besar dengan upload terpisah atau satu upload monolitik. Anda harus menggunakan upload monolitik untuk mengirim image ke Container Registry.
Izin yang diperlukan
Untuk mengirim image, Anda 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 Google Cloud level project. Peran Pemilik yang telah ditetapkan mencakup izin ini.
Saat pertama kali Anda mengirim image ke host registry dalam project (seperti
gcr.io
), Container Registry akan membuat bucket penyimpanan untuk registry. 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 menarik image untuk host registry yang ada di project Anda. Misalnya, jika project Anda hanya berisi registry
gcr.io
, pengguna dengan peran Storage Legacy Bucket Writer dapat mendorong image kegcr.io
, tetapi tidak dapat mendorong image keasia.gcr.io
.
Untuk 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 untuk 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 image di pusat data di Amerika Serikat, dalam bucket penyimpanan terpisah dari image 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 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.
Di konsol, nama host image akan tercantum di bagian Lokasi.
Pilih nama image target, yang dapat berbeda dengan nama image di komputer lokal Anda. Misalnya, image lokal mungkin disebut
web-image
, tetapi Anda ingin menyimpannya di Container Registry sebagaiweb-site
Gabungkan nama host, project ID konsol Google Cloud Anda, dan nama image target:
HOSTNAME/PROJECT-ID/TARGET-IMAGE
Perhatikan contoh berikut:
- Nama host:
gcr.io
- Google Cloud project:
my-project
- Nama image target:
web-site
Menggabungkan nama host, project, dan image target akan memberi Anda 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 image lokal dengan nama dari langkah sebelumnya. Jika Anda ingin memberi label versi gambar ini dengan tag, sertakan nama tag.
docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG
Ganti kode berikut:
- SOURCE_IMAGE adalah nama image lokal atau ID image.
- HOSTNAME adalah host registry yang Anda pilih di langkah 2.
- PROJECT adalah Google Cloud project ID.
- TARGET-IMAGE adalah nama untuk image saat disimpan di Container Registry.
- TAG adalah tag yang ingin Anda kaitkan dengan versi gambar 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 image yang baru saja diberi taglatest
, dan tidak selalu merupakan versi terbaru dari image.
Docker memberi tag pada image Anda dengan nama image dan tag yang Anda tentukan dalam perintah.
Menerapkan image yang memiliki tag ke Container Registry
Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.
Kirim image yang diberi tag ke Container Registry:
Jalankan perintah berikut untuk mendorong image dengan tag tertentu:
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
Jika Anda menghilangkan
:TAG
, Docker akan mendorong versi image yang diberi taglatest
.Misalnya, perintah ini mendorong 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.
Untuk melihat gambar yang Anda kirim:
Buka Konsol Google Cloud 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 perintah mirip dengan berikut ini:
DIGEST TAGS TIMESTAMP 44bde... test 2017-..-..
Mengambil image dari registry
Untuk mengambil image, Anda memerlukan peran Storage Object Viewer untuk bucket penyimpanan registry, atau peran dengan izin yang sama.
Untuk menarik 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 Lokasi di konsol. Ini adalah salah satu dari empat opsi:
gcr.io
,us.gcr.io
,eu.gcr.io
, atauasia.gcr.io
. - PROJECT-ID adalah project ID Konsol Google Cloud Anda.
Jika project ID Anda berisi titik dua (
:
), lihat Project cakupan domain. - IMAGE adalah nama image di Container Registry.
- TAG adalah tag yang diterapkan ke gambar. Di registry, tag bersifat unik untuk gambar.
- IMAGE_DIGEST adalah nilai hash sha256 dari konten gambar. Di Konsol Google Cloud, klik gambar tertentu untuk melihat metadata-nya. Ringkasan tercantum sebagai Ringkasan image.
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 tarik.
Klik TAMPILKAN PULL COMMAND di bagian atas halaman.
Salin perintah pull, yang mengidentifikasi image 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.