Mengirim dan mengambil image

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:

  1. Mengaktifkan Container Registry di project Anda.

  2. Docker yang terinstal dan dikonfigurasi.

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:

  1. 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.

  2. 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 ID my-project
    • Mengirim image ke registry
    docker pull busybox
    docker tag busybox gcr.io/my-project/busybox
    docker push gcr.io/my-project/busybox
    

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 ke gcr.io, tetapi tidak dapat mengirim gambar ke asia.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:

  1. Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.
  2. Tentukan nama image di Container Registry:

    1. 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 mendatang
      • us.gcr.io menghosting gambar di pusat data di Amerika Serikat, dalam bucket penyimpanan terpisah dari gambar yang dihosting oleh gcr.io
      • eu.gcr.io menghosting gambar di Uni Eropa
      • asia.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.

    2. 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 sebagai web-site

    3. 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.

  3. 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 sebagai gcr.io/my-project/web-site di Container Registry dengan tag v1.5

    docker tag web-image gcr.io/my-project/web-site:v1.5
    

    Jika Anda tidak menentukan tag, Docker akan menambahkan tag latest default. Karena latest adalah tag default, tag ini mewakili versi gambar yang terakhir diberi tag dengan tag latest, 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

  1. Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.

  2. 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 dengan latest.

    Misalnya, perintah ini mengirim image gcr.io/my-project/web-site dengan tag v1.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, atau asia.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:

  1. Klik nama image untuk membuka registry tertentu.

  2. Di registry, centang kotak di samping versi image yang ingin Anda ambil.

  3. Klik TAMPILKAN PERINTAH PULL di bagian atas halaman.

  4. Salin perintah pull, yang mengidentifikasi gambar menggunakan tag atau ringkasan.

Langkah selanjutnya