Mengirim dan mengambil image

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:

  1. Mengaktifkan Container Registry di project Anda.

  2. Menginstal dan mengonfigurasi Docker.

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:

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

  2. 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 project 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 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 ke gcr.io, tetapi tidak dapat mendorong image ke asia.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:

  1. Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.
  2. Tentukan nama untuk 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 image di pusat data di Amerika Serikat, dalam bucket penyimpanan terpisah dari image 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 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.

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

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

  3. 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 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 image yang baru saja diberi tag latest, 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

  1. Pastikan Anda telah mengonfigurasi autentikasi ke Container Registry.

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

    Misalnya, perintah ini mendorong 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.

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, atau asia.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:

  1. Klik nama image untuk membuka registry tertentu.

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

  3. Klik TAMPILKAN PULL COMMAND di bagian atas halaman.

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

Langkah selanjutnya