Halaman ini menjelaskan cara mengirim dan menarik image container dengan Docker. Bagian ini juga memberikan informasi tentang menarik image dengan alat crictl
jika Anda memecahkan masalah di Google Kubernetes Engine.
Untuk mengetahui informasi tentang men-deploy ke lingkungan runtime Trusted Cloud by S3NS , lihat Men-deploy ke Trusted Cloud.
Untuk mengetahui petunjuk tentang cara membuat daftar, memberi tag, dan menghapus gambar, lihat Mengelola gambar.
Sebelum memulai
- Jika repositori target tidak ada, buat repositori baru.
- Anda harus memiliki setidaknya akses Artifact Registry Writer ke repositori.
- Instal Docker jika belum diinstal.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengirim dan menarik image, minta administrator Anda untuk memberikan peran IAM berikut pada repositori:
-
Tarik image:
Pembaca Artifact Registry (
roles/artifactregistry.reader
) -
Memberi tag dan mengirim image:
Penulis Artifact Registry (
roles/artifactregistry.writer
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan 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 lain dengan repositori Docker. Bagian ini memberikan ringkasan singkat tentang hal-hal yang Anda perlukan agar berhasil melakukan autentikasi. Untuk petunjuk mendetail, lihat Menyiapkan autentikasi untuk Docker.
Menggunakan helper kredensial
Untuk bantuan kredensial gcloud CLI atau bantuan kredensial mandiri, host Artifact Registry yang Anda gunakan harus ada dalam file konfigurasi Docker Anda.
Artifact Registry tidak otomatis menambahkan host registry ke file konfigurasi Docker, jadi Anda harus menambahkan host Anda ke file tersebut.
Jalankan helper kredensial untuk menambahkan host. Misalnya, perintah berikut
menambahkan u-france-east1-docker.s3nsregistry.fr
.
Helper kredensial gcloud CLI:
gcloud auth configure-docker u-france-east1-docker.s3nsregistry.fr
Helper kredensial 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 menarik gambar.
Contoh berikut membuat token akses menggunakan peniruan identitas akun layanan, lalu
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 Anda tidak memiliki izin untuk meniru identitas akun layanan, Anda dapat mengaktifkan akun layanan di sesi gcloud CLI Anda, 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 yang dienkode 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 gambar
Mode repositori: standar
Untuk mengirim image lokal ke repositori Docker standar, Anda harus memberi tag pada image dengan nama repositori, lalu mengirim image tersebut.
Jika repositori Docker Artifact Registry Anda mengaktifkan keabadian tag, tag harus selalu mereferensikan ringkasan image yang sama di repositori. Anda tidak dapat menggunakan tag pada versi lain dari gambar yang sama yang Anda kirim ke repositori. Untuk mengetahui informasi selengkapnya tentang ringkasan image, tag, dan keabadian tag, lihat Versi image container.
Untuk gambar besar, batasan berikut berlaku:
- Waktu upload
- Jika Anda mengautentikasi ke Artifact Registry menggunakan token akses, token hanya valid selama 60 menit. Jika Anda memperkirakan waktu upload akan melebihi 60 menit, gunakan metode autentikasi yang berbeda.
- Ukuran gambar
- Ukuran artefak maksimum adalah 5 TB.
- Artifact Registry tidak mendukung upload berchunk Docker. Beberapa alat mendukung upload gambar besar dengan upload yang di-chunk atau upload monolitik tunggal. Anda harus menggunakan upload monolitik untuk mengirim image ke Artifact Registry.
Memberi tag pada gambar lokal
Pastikan Anda diautentikasi ke repositori.
Tentukan nama gambar. Format nama gambar lengkap adalah:
LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE
Ganti nilai berikut:
LOCATION
adalah lokasi regional repositori tempat image disimpan.PROJECT-ID
adalah Trusted Cloud project ID konsol Anda.REPOSITORY
adalah nama repositori tempat image disimpan.IMAGE
adalah nama gambar. Nama ini dapat berbeda dengan nama lokal gambar.
Misalnya, pertimbangkan gambar dengan karakteristik berikut:
- Lokasi repositori:
u-france-east1
- Nama repositori:
my-repo
- Project ID:
my-project
- Nama gambar lokal:
my-image
- Nama gambar target:
test-image
Nama gambar untuk contoh ini adalah:
u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image
Untuk 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:TAG
Ganti SOURCE-IMAGE dengan nama image lokal atau ID image dan TAG dengan tag. Jika Anda tidak menentukan tag, Docker akan menerapkan tag
latest
default.Jika setelan tag gambar yang tidak dapat diubah diaktifkan, tag harus unik untuk setiap versi gambar, termasuk tag
latest
. Anda tidak dapat mengirimkan 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=LOCATION
Untuk contoh gambar dari langkah sebelumnya, Anda akan menggunakan perintah berikut jika gambar lokal
my-image
berada di direktori saat ini:docker tag my-image u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image
Jika Anda ingin menerapkan tag tertentu, gunakan perintah:
docker tag SOURCE-IMAGE LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
Untuk menggunakan tag
staging
dengan contoh gambar, Anda menambahkan:staging
ke 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 diautentikasi ke repositori.
Jika Anda menggunakan
gcloud auth configure-docker
ataudocker-credential-gcr configure-docker
untuk mengonfigurasi klien Docker, verifikasi bahwa nama host target ada di file konfigurasi Docker Anda.Kirim image yang diberi tag dengan perintah:
docker push LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE
Perintah ini akan mengirimkan 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 mengirimkan image, image tersebut akan disimpan di repositori yang ditentukan.
Setelah mengirimkan gambar, Anda dapat:
Buka Trusted Cloud console untuk melihat gambar.
Jalankan perintah
gcloud
untuk melihat tag image dan ringkasan yang dibuat secara otomatis:gcloud artifacts docker images list \ LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE [--include-tags]
Contoh output berikut menunjukkan ringkasan gambar yang dipangkas, tetapi perintah selalu menampilkan ringkasan gambar 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
Mengambil image dengan Docker
Mode repositori: standarPastikan Anda diautentikasi ke repositori.
Jika Anda menggunakan
gcloud auth configure-docker
ataudocker-credential-gcr configure-docker
untuk mengonfigurasi klien Docker, verifikasi bahwa nama host target ada di file konfigurasi Docker Anda.Untuk menarik dari repositori, gunakan perintah:
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE:TAG
atau
docker pull LOCATION-docker.s3nsregistry.fr/PROJECT-ID/REPOSITORY/IMAGE@IMAGE-DIGEST
Ganti nilai berikut:
LOCATION
adalah lokasi regional repositori tempat image disimpan.PROJECT
adalah Trusted Cloud project ID konsol Anda.PROJECT
adalah Trusted Cloud project ID konsol Anda.REPOSITORY
adalah nama repositori tempat image disimpan.IMAGE
adalah nama image di repositori.TAG
adalah tag untuk versi gambar yang ingin Anda tarik.IMAGE-DIGEST
adalah nilai hash sha256 dari konten gambar. Setiap versi gambar memiliki ringkasan gambar yang unik. Di Trusted Cloud konsol, klik gambar tertentu untuk melihat metadatanya. Ringkasan tercantum sebagai Ringkasan gambar.
Misalnya, pertimbangkan gambar dengan karakteristik berikut:
- Lokasi repositori:
u-france-east1
- Nama repositori:
my-repo
- Project ID:
my-project
- Nama image:
test-image
- Tag:
staging
Perintah untuk menarik image adalah:
docker pull u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/test-image:staging
Docker akan mendownload image yang ditentukan.
Menarik gambar 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 menarik image dari Artifact Registry menggunakan crictl
.
Karena crictl
terutama merupakan alat pemecahan masalah, beberapa perintah Docker seperti
mendorong atau memberi tag pada image tidak tersedia.
Untuk menarik image dari Artifact Registry:
Di Trusted Cloud konsol, buka halaman VM Instances.
SSH ke node yang sedang Anda pecahkan masalahnya.
Dapatkan token akses untuk autentikasi dengan repositori.
curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"
Tarik image menggunakan
crictl pull --creds
dan nilaiaccess_token
crictl 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 gambar.
- Jika Anda ingin menjalankan container di Compute Engine, pelajari container di Compute Engine.
- Menggunakan
crictl
untuk men-debug node Kubernetes - Pelajari cara menggunakan
crictl
untuk menarik image dari repositori Artifact Registry pribadi - Pelajari lebih lanjut cara mengonfigurasi
crictl
registri gambar