Anda dapat menggunakan alat gcrane untuk menyalin image antar-repositori Docker di Artifact Registry.
Sebelum memulai
Pastikan persyaratan berikut terpenuhi:
Anda telah membuat repositori Docker target di Artifact Registry untuk image yang Anda salin.
Anda memiliki izin yang diperlukan:
Pembaca Artifact Registry (
roles/storage.objectViewer) atau peran dengan izin yang setara untuk repositori yang Anda salin.Penulis Artifact Registry (
roles/artifactregistry.writer) atau peran dengan izin yang setara untuk repositori target.
Ringkasan
Alat gcrane menyederhanakan penyalinan antar repositori dengan dukungan untuk:
- Menyalin kumpulan image dengan satu perintah, termasuk semua image di jalur yang ditentukan atau semua image yang disimpan di host multi-region dalam project Anda.
- Melewati lapisan image yang sudah diupload.
Menghapus image yang tidak digunakan
Menghapus image yang tidak digunakan sebelum Anda melakukan operasi penyalinan dapat membantu Anda mengurangi biaya penyimpanan.
Menyiapkan gcrane
Anda dapat menjalankan gcrane dari lingkungan berikut:
Instance Compute Engine - Gunakan opsi ini jika Anda memiliki banyak container untuk disalin.
Biaya: Waktu aktif instance untuk VM Compute Engine. Jika instance VM berada di lokasi yang berbeda dengan repositori sumber, biaya traffic keluar jaringan mungkin berlaku untuk image yang Anda salin.
Sebaiknya gunakan alat gcrane versi terbaru untuk memanfaatkan semua fitur dan peningkatan yang tersedia. Petunjuk penyiapan di bagian berikut mencakup langkah-langkah untuk mendownload versi terbaru.
Untuk memeriksa versi penginstalan gcrane yang ada, jalankan perintah:
gcrane version
Menyiapkan Compute Engine
Untuk menyalin image dengan gcrane dari instance VM Compute Engine:
- Buat instance VM. Untuk meminimalkan biaya, buat instance di lokasi yang sama dengan registry yang Anda salin.
Secara default, instance VM dikaitkan dengan akun layanan default dan memiliki izin untuk mengambil image. Anda harus mengubah cakupan akses agar instance VM dapat mengirim image.
Hentikan instance VM. Lihat Menghentikan instance.
Ubah cakupan akses dengan perintah:
gcloud compute instances set-service-account INSTANCE --scopes=storage-rwGanti INSTANCE dengan nama instance VM.
Mulai ulang instance VM. Lihat Memulai instance yang dihentikan.
Hubungkan ke instance VM menggunakan SSH.
Jalankan perintah berikut untuk mendownload
gcrane.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gzJalankan perintah berikut untuk membuat perintah
gcranedapat dieksekusi.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/Jalankan perintah
gcrane --helpuntuk memverifikasi penginstalan.
Anda kini siap menyalin image. Untuk melanjutkan:
Menyiapkan mesin lokal
Download
gcranedari repositori GitHub. Misalnya, perintah berikut mendownload distribusi Linux x86-64 dari command line.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gzJalankan perintah berikut untuk membuat perintah
gcranedapat dieksekusi. Perintah ini mengasumsikan bahwa file yang didownload diberi namago-containerregistry.tar.gz.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/Jalankan perintah
gcrane --helpuntuk memverifikasi penginstalan.
Anda kini siap menyalin image. Untuk melanjutkan:
Mengidentifikasi image yang akan disalin
Setelah menginstal alat gcrane, Anda dapat mencantumkan image yang ada di repositori sumber untuk menemukan image yang ingin Anda salin.
Untuk mencantumkan image yang ada, jalankan perintah:
gcrane ls LOCATION-docker.s3nsregistry.fr/PROJECT/REPOSITORY
Untuk mencantumkan tag yang dimiliki image, jalankan perintah:
gcrane ls LOCATION-docker.s3nsregistry.fr/PROJECT/IMAGE
Untuk mencantumkan image secara rekursif di jalur tertentu, jalankan perintah:
gcrane ls -r LOCATION-docker.s3nsregistry.fr/PROJECT/PATH
Untuk setiap perintah:
- Ganti LOCATION dengan lokasi repositori.
- Ganti PROJECT dengan project ID.
- Ganti PATH dengan jalur yang akan disalin.
Lihat Menyalin image untuk mengetahui perintah guna menyalin image Anda.
Menyalin image
Anda dapat menyalin image individual atau kumpulan image dengan perintah gcrane cp.
Untuk menyalin satu image, jalankan perintah:
gcrane cp LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2
Untuk menyalin image secara rekursif di jalur tertentu dalam repositori, jalankan perintah:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1/PATH1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2/PATH2
Untuk menyalin semua image dalam repositori, jalankan perintah:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2
Ganti nilai berikut:
- LOCATION1 adalah lokasi repositori sumber.
- LOCATION2 adalah lokasi repositori target.
- PROJECT1 adalah Cloud de Confiance project ID yang terkait dengan repositori sumber.
- PROJECT2 adalah Cloud de Confiance project ID yang terkait dengan repositori target.
- REPOSITORY1 adalah nama repositori sumber.
- REPOSITORY2 adalah nama repositori target.
- IMAGE1 adalah image yang ingin Anda salin.
- IMAGE2 adalah nama untuk image di repositori target.
Contoh
Perintah berikut menyalin my-image:tag1 dari repositori repo1 ke repositori repo2 dalam project dan region yang sama.
gcrane cp u-france-east1-docker.s3nsregistry.fr/my-project/repo1/my-image:tag1 \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/my-image:tag1
Perintah berikut menyalin semua image secara rekursif di test-images/testing dalam repositori repo1 ke jalur yang sama di repositori repo2.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/my-project/repo1/test-images/testing \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/test-images/testing
Perintah berikut menyalin semua image dari repositori my-repo di project dev-project ke repositori my-repo di project lain yang disebut prod-project.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/dev-project/my-repo \
u-france-east1-docker.s3nsregistry.fr/prod-project/my-repo