Halaman ini menjelaskan cara mengirim dan mengambil image container dengan Docker. Halaman ini juga memberikan informasi tentang cara mengambil image dengan alat crictl jika Anda memecahkan masalah di Google Kubernetes Engine.
Untuk mengetahui informasi tentang cara men-deploy ke Cloud de Confiance by S3NS lingkungan runtime, lihat Men-deploy ke Cloud de Confiance.
Untuk mengetahui petunjuk tentang cara membuat daftar, memberi tag, dan menghapus image, lihat Mengelola image.
Sebelum memulai
- Jika repositori target tidak ada, buat repositori baru.
- Anda harus memiliki setidaknya akses Penulis Artifact Registry akses ke repositori.
- Untuk mengirim image dengan Docker, instal Docker jika belum diinstal.
- Untuk mengirim image dengan Podman
- Instal Google Cloud CLI jika belum diinstal.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengirim dan mengambil image, minta administrator untuk memberi Anda peran IAM berikut di repositori:
-
Mengambil image:
Pembaca Artifact Registry (
roles/artifactregistry.reader) -
Memberi tag dan mengirim image:
Penulis Artifact Registry (
roles/artifactregistry.writer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Mengautentikasi ke repositori
Anda harus melakukan autentikasi ke repositori setiap kali menggunakan Docker atau klien pihak ketiga lainnya dengan repositori Docker. Bagian ini memberikan ringkasan singkat tentang hal yang Anda perlukan untuk melakukan autentikasi dengan berhasil. Untuk mengetahui petunjuk mendetail, lihat Menyiapkan autentikasi untuk Docker.
Menggunakan credential helper
Untuk credential helper gcloud CLI atau credential helper mandiri, host Artifact Registry yang Anda gunakan harus ada dalam file konfigurasi Docker.
Artifact Registry tidak otomatis menambahkan host registry ke file konfigurasi Docker, sehingga Anda harus menambahkan host Anda ke file.
Jalankan credential helper untuk menambahkan host. Misalnya, perintah berikut
menambahkan u-france-east1-docker.s3nsregistry.fr.
Credential helper gcloud CLI:
gcloud auth configure-docker u-france-east1-docker.s3nsregistry.frCredential helper mandiri
docker-credential-gcr configure-docker u-france-east1-docker.s3nsregistry.fr
Menggunakan token akses
Untuk autentikasi token akses, Anda membuat token dan menggunakannya sebagai sandi dengan perintah docker login. Token berlaku selama 60 menit, jadi Anda harus melakukan autentikasi sesaat sebelum memberi tag, mengirim, atau mengambil image.
Contoh berikut membuat token akses menggunakan peniruan identitas akun layanan
dan kemudian
melakukan autentikasi ke Artifact Registry. Anda harus memiliki izin dalam peran Pembuat Token Akun Layanan (roles/iam.serviceAccountTokenCreator) untuk membuat token dengan cara ini.
Linux
gcloud auth print-access-token \
--impersonate-service-account ACCOUNT | docker login \
-u oauth2accesstoken \
--password-stdin https://LOCATION-docker.s3nsregistry.fr
Windows
gcloud auth print-access-token `
--impersonate-service-account ACCOUNT
ya29.8QEQIfY_...
docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." `
https://LOCATION-docker.s3nsregistry.fr
Jika tidak memiliki izin untuk meniru identitas akun layanan, Anda dapat mengaktifkan akun layanan di sesi gcloud CLI, lalu mendapatkan token. Untuk mengetahui detailnya, lihat petunjuk untuk menyiapkan autentikasi token akses.
Menggunakan kunci akun layanan
Untuk kunci akun layanan, Anda menggunakan kunci sebagai sandi dengan perintah docker login.
Misalnya, perintah berikut menggunakan kunci akun layanan berenkode base64
dalam file key.json untuk melakukan autentikasi ke u-france-east1-docker.s3nsregistry.fr.
Linux
cat key.json | docker login -u _json_key_base64 --password-stdin \
https://u-france-east1-docker.s3nsregistry.fr
Windows
docker login -u _json_key_base64 --password-stdin https://u-france-east1-docker.s3nsregistry.fr < key.json
Untuk mengetahui detailnya, lihat petunjuk untuk menyiapkan autentikasi kunci akun layanan.
Mengirim image dengan Docker
Mode repositori: standar
Untuk mengirim image lokal ke repositori Docker standar, Anda memberi tag pada image dengan nama repositori, lalu mengirim image.
Jika repositori Docker Artifact Registry Anda mengaktifkan imutabilitas tag, tag harus selalu mereferensikan ringkasan image yang sama di repositori. Anda tidak dapat menggunakan tag pada versi lain dari image yang sama yang Anda kirim ke repositori. Untuk mengetahui informasi selengkapnya tentang ringkasan image, tag, dan tag imutabilitas, lihat Versi image container.
Untuk image besar, batasan berikut berlaku:
- Waktu upload
- Jika Anda melakukan autentikasi ke Artifact Registry menggunakan token akses, token hanya berlaku selama 60 menit. Jika waktu upload Anda diperkirakan melebihi 60 menit, gunakan metode autentikasi lain.
- Ukuran image
- Ukuran artefak maksimum adalah 5 TB.
- Artifact Registry tidak mendukung upload Docker yang dipecah menjadi beberapa bagian. Beberapa alat mendukung upload image besar dengan upload yang dipecah menjadi beberapa bagian atau a single upload monolitik tunggal. Anda harus menggunakan upload monolitik untuk mengirim image ke Artifact Registry.
Memberi tag pada image lokal
Pastikan Anda telah melakukan autentikasi ke repositori.
Tentukan nama image. Format nama image lengkap adalah:
LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGEGanti nilai berikut:
LOCATIONadalah lokasi regional repositori tempat image disimpan.PROJECT-IDadalah Cloud de Confiance console project ID Anda.REPOSITORYadalah nama repositori tempat image disimpan.IMAGEadalah nama image. Nama ini dapat berbeda dengan nama lokal image.
Misalnya, pertimbangkan image dengan karakteristik berikut:
- Lokasi repositori:
u-france-east1 - Nama repositori:
my-repo - Project ID:
my-project - Nama image lokal:
my-image - Nama image target:
test-image
Nama image untuk contoh ini adalah:
u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imageUntuk mengetahui detail tentang format nama image, lihat Nama repositori dan image.
Beri tag pada image lokal dengan nama repositori.
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGGanti SOURCE-IMAGE dengan nama image lokal atau ID image dan TAG dengan tag. Jika Anda tidak menentukan tag, Docker akan menerapkan tag
latestdefault.Jika setelan tag image imutabel diaktifkan, tag harus unik untuk setiap versi image, termasuk tag
latest. Anda tidak dapat mengirim image ke repositori jika tag sudah digunakan oleh versi lain dari image yang sama di repositori. Untuk memverifikasi apakah setelan diaktifkan untuk repositori, jalankan perintah:gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT-ID \ --location=LOCATIONUntuk image contoh dari langkah sebelumnya, Anda akan menggunakan perintah berikut jika image lokal
my-imageberada di direktori saat ini:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-imageJika Anda ingin menerapkan tag tertentu, gunakan perintah:
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGUntuk menggunakan tag
stagingdengan image contoh, tambahkan:stagingke perintah:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
Mengirim image yang diberi tag ke Artifact Registry
Pastikan Anda telah melakukan autentikasi ke repositori.
Jika Anda menggunakan
gcloud auth configure-dockerataudocker-credential-gcr configure-dockeruntuk mengonfigurasi klien Docker, pastikan nama host target ada dalam file konfigurasi Docker Anda.Kirim image yang diberi tag dengan perintah:
docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGEPerintah ini mengirim image yang memiliki tag
latest. Jika Anda ingin mengirim image yang memiliki tag berbeda, gunakan perintah:docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
Saat Anda mengirim image, image tersebut akan disimpan di repositori yang ditentukan.
Setelah mengirim image, Anda dapat:
Buka Cloud de Confiance konsol untuk melihat image.
Jalankan perintah
gclouduntuk melihat tag image dan ringkasan yang dibuat secara otomatis:gcloud artifacts docker images list \ LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE [--include-tags]Output contoh berikut menunjukkan ringkasan image yang dipangkas, tetapi perintah selalu menampilkan ringkasan image lengkap.
IMAGE DIGEST CREATE_TIME UPDATE_TIME u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:45 2019-04-10T15:08:45 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:238... 2019-04-10T17:23:53 2019-04-10T17:23:53 u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image sha256:85f... 2019-04-10T15:08:46 2019-04-10T15:08:46
Mengirim image dengan Podman
Anda dapat mengirim image container dari Podman ke Artifact Registry.
Buat image Anda dengan Podman menggunakan perintah berikut:
podman build -t IMAGE:latest .
Beri tag pada image Podman lokal Anda untuk Artifact Registry.
Gunakan jalur Artifact Registry lengkap untuk tag. Formatnya sama seperti untuk Docker:
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE:TAGJalankan perintah berikut:
podman tag IMAGE-NAME LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY_NAME/PODMAN-IMAGE:TAG
Autentikasi Podman dengan Artifact Registry. Untuk menggunakannya dengan credential helper, jalankan perintah berikut:
gcloud auth configure-docker LOCATION-docker.pkg.dev
Jika Podman tidak dapat memperoleh kredensial secara otomatis, Anda juga dapat melakukan autentikasi dengan token akses. Jalankan perintah berikut:
gcloud auth print-access-token | podman login -u oauth2accesstoken --password-stdin LOCATION-docker.pkg.dev
Kirim image yang diberi tag ke Artifact Registry:
podman push LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY_NAME/IMAGE:TAG
Pastikan tag sama persis dengan tag yang Anda gunakan untuk memberi tag pada image Podman lokal.
Mengambil image dengan Docker
Mode repositori: standarPastikan Anda telah melakukan autentikasi ke repositori.
Jika Anda menggunakan
gcloud auth configure-dockerataudocker-credential-gcr configure-dockeruntuk mengonfigurasi klien Docker, pastikan nama host target ada dalam file konfigurasi Docker Anda.Untuk mengambil dari repositori, gunakan perintah:
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAGatau
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGESTGanti nilai berikut:
LOCATIONadalah lokasi regional repositori tempat image disimpan.PROJECTadalah Cloud de Confiance project ID konsol Anda.PROJECTadalah Cloud de Confiance project ID konsol Anda.REPOSITORYadalah nama repositori tempat image disimpan.IMAGEadalah nama image di repositori.TAGadalah tag untuk versi image yang ingin Anda ambil.IMAGE-DIGESTadalah nilai hash sha256 dari konten image. Setiap versi image memiliki ringkasan image yang unik. Di Cloud de Confiance konsol, klik image tertentu untuk melihat metadatanya. Ringkasan tercantum sebagai Ringkasan image.
Misalnya, pertimbangkan image dengan karakteristik berikut:
- Lokasi repositori:
u-france-east1 - Nama repositori:
my-repo - Project ID:
my-project - Nama image:
test-image - Tag:
staging
Perintah untuk mengambil image ini adalah:
docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
Docker mendownload image yang ditentukan.
Mengambil image dengan crictl
crictl adalah alat command line yang berguna bagi developer runtime CRI untuk men-debug runtime mereka tanpa perlu menyiapkan komponen Kubernetes. Jika node
Google Kubernetes Engine Anda menggunakan runtime containerd, Anda dapat mengambil image dari
Artifact Registry menggunakan crictl.
Karena crictl terutama merupakan alat pemecahan masalah, beberapa perintah Docker seperti mengirim atau memberi tag pada image tidak tersedia.
Untuk mengambil image dari Artifact Registry:
Di Cloud de Confiance konsol, buka halaman VM Instances.
Gunakan SSH untuk mengakses node yang Anda gunakan untuk memecahkan masalah.
Dapatkan token akses untuk autentikasi dengan repositori.
curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
Ambil image menggunakan
crictl pull --credsdan nilaiaccess_tokencrictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
atau
crictl pull --creds "oauth2accesstoken:ACCESS_TOKEN" LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST
Outputnya akan terlihat seperti berikut:
Image is up to date for sha256:0f25067aa9c180176967b4b50ed49eed096d43fa8c17be9a5fa9bff05933bee5
Langkah berikutnya
- Pelajari cara mengelola tag dan menghapus image.
- Jika Anda ingin menjalankan container di Compute Engine, pelajari container di Compute Engine.
- Gunakan
crictluntuk men-debug node Kubernetes - Pelajari cara menggunakan
crictluntuk mengambil image dari repositori Artifact Registry pribadi - Pelajari lebih lanjut cara mengonfigurasi
crictlregistry image