Konsep container

Dokumen ini memperkenalkan konsep utama yang terkait dengan penampung, termasuk registri, repositori, dan artefak. Beberapa informasi dasar tentang cara konsep ini diterapkan ke Artifact Registry dan Container Registry juga disertakan.

Registry

Registry menyimpan dan mendistribusikan image container dan artefak yang diatur berdasarkan nama dalam repositories. Registry dapat berisi satu repositori atau beberapa repositori dan dapat bersifat publik atau pribadi.

Layanan registry seperti Docker Hub dan Artifact Registry menyediakan opsi untuk membuat repositori publik atau pribadi. Saat mengambil image publik, penting untuk memahami kemungkinan masalah keamanan. Baca artikel tentang pengelolaan dependensi untuk mengetahui informasi selengkapnya tentang pemantauan kerentanan dan mengurangi jejak dependensi Anda.

Registry diatur ke dalam repositori yang menyimpan setiap image penampung. Artifact Registry memungkinkan Anda membuat beberapa repositori dalam satu project dan mengaitkan region atau region multi-region tertentu dengan setiap repositori. Repositori terkait dapat dikelompokkan berdasarkan label.

Repositori

Image dan artefak dengan nama yang sama, tetapi tag yang berbeda diatur ke dalam repositori. Jika tidak ada tag yang ditentukan saat image di-push ke repositori, image akan diberi tag dengan tag latest. Jika gambar lain di-push tanpa menentukan tag, tag latest akan dipindahkan dari gambar asli ke gambar yang lebih baru, sehingga gambar pertama tidak memiliki tag. Sebaiknya beri rilis tag selain latest.

Istilah repositori tidak selalu digunakan secara konsisten; dalam Artifact Registry, lebih baik menggunakan bagian jalur ke image untuk mengidentifikasi project, region atau region multi-region dan nama image beserta tag atau ringkasan manifes untuk mengidentifikasi versi yang benar.

Contoh:

docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

  • us-west1 adalah lokasi repositori
  • docker.pkg.dev adalah nama host untuk repositori Docker.
  • PROJECT adalah namespace yang dibuat oleh project ID Google Cloud Anda.
  • quickstart-docker-repo adalah namespace dalam project tempat Anda menyimpan gambar. Di Artifact Registry, bagian jalur ini disebut repositori.
  • quickstart-image adalah repositori untuk semua versi quickstart-image dan sering disebut sebagai image.
  • tag1 adalah tag yang menentukan versi gambar.

Image

Artefak dan image dapat disimpan dalam Artifact Registry. Artefak dapat berupa apa saja: file teks, image docker, atau diagram Helm, sedangkan image biasanya merujuk pada image container. Image container adalah paket software yang berisi semua elemen yang diperlukan untuk dijalankan di lingkungan apa pun. Baca Apa yang dimaksud dengan penampung untuk mengetahui informasi selengkapnya.

Image dikirim atau diupload ke repositori dan ditarik atau didownload dari repositori. Untuk menentukan image dan versi yang benar, registry dan artefak unik harus ditentukan.

Contoh:

docker pull us-west1-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

  • us-west1-docker.pkg.dev adalah registry
  • /google-samples/containers/gke/ adalah namespace dan sub-namespace. Di Artifact Registry, google-samples adalah project Google Cloud dan containers disebut sebagai repositori Artifact Registry
  • hello-app adalah nama artefak
  • :1.0 adalah tag yang menentukan versi artefak yang akan ditarik

Lapisan

Image container yang disimpan di repositori dibuat secara bertahap menggunakan lapisan. Gambar yang berbeda dapat menggunakan beberapa lapisan yang sama. Lapisan ditentukan dengan cara yang berbeda-beda, bergantung pada jenis image, misalnya, setiap petunjuk dalam Dockerfile sesuai dengan lapisan dalam image Docker. Dalam registry, gambar dengan lapisan umum akan berbagi lapisan tersebut, sehingga meningkatkan efisiensi penyimpanan. Untuk keamanan, lapisan tidak dibagikan di seluruh registry yang berbeda.

Saat Anda menghapus image container, lapisan tidak langsung dihapus. Lapisan yang tidak dirujuk oleh gambar apa pun di registry akan dihapus setiap hari.

Tag

Pengguna menambahkan tag saat mendorong atau menarik image ke repositori untuk menentukan versi image. Gambar dapat memiliki satu atau beberapa tag, atau tidak memiliki tag sama sekali. Jika Anda mengirim gambar dua kali dengan tag yang sama, tag akan dihapus dari gambar pertama dan dipindahkan ke gambar kedua, sehingga gambar pertama tidak memiliki tag. Gambar yang tidak diberi tag masih dapat diakses melalui ringkasan manifes.

Tag latest adalah tag khusus yang ditambahkan saat gambar didorong tanpa tag.

Contoh:

docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app

mengirimkan gambar ke hello-app:latest

docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app

menarik gambar hello-app:latest.

Penting untuk diperhatikan bahwa saat image di-push ke repositori dengan tag selain latest, tag latest tidak ditambahkan, sehingga image latest mungkin berada di belakang perubahan terbaru. Sebaiknya gunakan tag selain latest untuk rilis.

Manifes

Manifes Gambar mengidentifikasi dan menentukan lapisan dalam setiap gambar secara unik. Manifes diidentifikasi oleh hash SHA-256 unik yang disebut ringkasan manifes. Ringkasan manifes lebih andal dan aman daripada tag karena beberapa versi gambar yang sama dapat di-push ke tag yang sama, sehingga beberapa gambar tidak memiliki tag, sementara setiap gambar ditentukan secara unik oleh ringkasan manifesnya.

Jika Anda menggunakan alat untuk memindai atau menganalisis gambar, hasil dari alat ini hanya valid untuk gambar yang dipindai. Untuk memastikan bahwa Anda men-deploy image yang telah dipindai, Anda tidak dapat mengandalkan tag karena image yang dirujuk oleh tag dapat berubah.

Untuk mempelajari lebih lanjut pemberian tag dan manifes khusus Artifact Registry, baca Mengelola Image dan Menggunakan Image container.

Langkah selanjutnya