Jika Anda menggunakan sumber daya berbasis Arm untuk menerapkan kontainer, Anda mungkin perlu membangun image secara terpisah dan menetapkan tag untuk arsitektur x86 dan Arm. Hal ini dapat meningkatkan biaya pemeliharaan. Untuk menyederhanakan proses ini, Anda dapat mengonfigurasi tugas pembuatan image multi-arsitektur di konsol Container Registry. Dengan satu tag, Anda dapat mengelola image dari beberapa arsitektur.
Prasyarat
Sebuah instance Container Registry Enterprise Edition telah dibuat. Untuk informasi lebih lanjut, lihat Buat instance Container Registry Enterprise Edition.
Instance tersebut terikat ke platform hosting kode sumber. Untuk informasi lebih lanjut, lihat Ikat platform hosting kode sumber.
Proyek Anda dapat dibuat pada arsitektur tempat Anda ingin membangun image.
Informasi latar belakang
Jika Anda hanya memilih satu arsitektur, sebuah image akan dibangun hanya untuk arsitektur tersebut dan didorong dengan tag yang ditentukan.
Jika Anda memilih beberapa arsitektur, image-image tersebut akan dibangun untuk setiap arsitektur dan didorong ke repositori image tertentu dengan tag yang sama. Dalam hal ini, klien seperti Docker client dan containerd menarik image berdasarkan arsitektur klien dari repositori image jarak jauh.
Tabel berikut menjelaskan arsitektur yang didukung.
Sistem operasi | Arsitektur | Didukung |
Linux | amd64 | Ya (Default) |
Linux | arm64 | Ya |
Linux | arm/v7 | Ya |
Linux | arm/v6 | Ya |
Windows | amd64 | Tidak |
Langkah 1: Buat proyek
Buat proyek sebagai repositori kode sumber berdasarkan mana image dibangun. Dalam contoh ini, Anda dapat menggunakan file Golang sampel berikut dan Dockerfile untuk membuat proyek Anda.
// Simpan file dan beri nama file hello.go.
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Printf("Halo, %s!\n", runtime.GOARCH)
}FROM golang:alpine AS builder
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN go build -o hello hello.go
FROM alpine
RUN mkdir /app
WORKDIR /app
COPY --from=builder /app/hello .
CMD ["./hello"]Langkah 2: Buat repositori image
Buat repositori image dan ikat ke repositori kode. Semua pembuatan image yang dipicu oleh repositori kode didorong ke repositori image.
Masuk ke konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Di panel navigasi sisi kiri, klik Instances.
Di halaman Instances, klik instance Enterprise Edition yang ingin Anda kelola.
Di panel navigasi sisi kiri halaman manajemen instance Enterprise Edition, pilih .
- Di halaman Repositories, klik Create Repository.
Di langkah Repository Info, konfigurasikan parameter Namespace, Repository Name, Repository Type, Tags, Accelerated Image, Summary, dan Description. Lalu, klik Next.
Di langkah Code Source, konfigurasikan Code Source, Build Settings, dan Build Rules, lalu klik Create Repository.
Parameter
Deskripsi
Sumber Kode
Sumber kode.
Pengaturan Pembuatan
Otomatis Bangun Image Saat Kode Berubah: Aturan pembuatan dipicu secara otomatis saat kode dikomit dari cabang.
Bangun Dengan Server yang Ditempatkan di Luar Daratan Tiongkok: Image dibangun di server di luar daratan Tiongkok dan kemudian didorong ke repositori di wilayah tertentu. Jika Dockerfile yang digunakan dalam proyek Anda harus diunduh dari situs di luar daratan Tiongkok tetapi koneksi jaringan lintas batas tidak stabil, Anda dapat mengaktifkan Build With Servers Deployed Outside Chinese Mainland.
Bangun Tanpa Cache: Sistem menarik image dasar setiap kali image dibangun. Jika Anda memilih Build Without Cache, ini mungkin memperlambat proses pembuatan.
Di halaman Repositories, klik repositori image yang dibuat. Jika Build ditampilkan di panel navigasi sisi kiri halaman manajemen repositori, repositori image terikat ke repositori kode sumber.
Langkah 3: Buat aturan pembuatan image dan pilih arsitektur
Dalam contoh ini, linux/amd64 dan linux/arm64 dipilih untuk parameter Arsitektur Pembuatan saat Anda mengonfigurasi aturan pembuatan image.
Masuk ke konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Di panel navigasi sisi kiri, klik Instances.
Di halaman Instances, klik instance Enterprise Edition yang ingin Anda kelola.
Di panel navigasi sisi kiri halaman manajemen instance Enterprise Edition, pilih .
Di halaman Repositories, temukan repositori image yang dibuat dan klik Manage di kolom Actions.
Di panel navigasi sisi kiri, klik Build. Di bagian Build Rules, klik Add Build Rule. Di langkah Build Information dari wizard Tambah Aturan Pembuatan, konfigurasikan parameter lalu klik Next. Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
Type
Tentukan tipe repositori kode sumber. Nilai valid: Branch dan Tag.
Branch/Tag
Pilih atau masukkan branch atau tag. Ekspresi reguler didukung. Jika Anda menentukan ekspresi reguler release-(?<imageTag>\w*), sistem secara otomatis membangun image v1 ketika kode sumber di branch release-v1 diperbarui. Untuk informasi lebih lanjut tentang cara menentukan ekspresi reguler, lihat Lampiran: Gunakan ekspresi reguler dalam grup penangkapan bernama.
CatatanSetelah Anda menentukan ekspresi reguler, image hanya dapat dibangun oleh sistem. Anda tidak dapat membangun image secara manual.
Dockerfile Directory
Tentukan direktori tempat Dockerfile berada. Ini adalah subdirektori dari direktori branch atau tag. Misalnya, jika direktori branch adalah master/ dan Dockerfile ada di direktori master/, nilainya adalah master/Dockerfile.
Dockerfile Filename
Tentukan nama file Dockerfile. Nama defaultnya adalah Dockerfile.
Di langkah Tag, konfigurasikan parameter, klik Save, lalu klik Next. Tabel berikut menjelaskan parameter.
CatatanKlik Add Configuration untuk menambahkan tag image. Anda dapat menambahkan hingga tiga tag image.
Parameter
Deskripsi
Image Tag
Tag dari image. Contoh: latest. Anda dapat mengaktifkan grup penangkapan bernama. Misalnya, jika Anda menentukan grup penangkapan bernama untuk Branch/Tag, Anda dapat menggunakan konten yang ditangkap.
Build Time
Waktu (UTC+8) saat kode sumber didorong. Contoh: 20201015 atau 202010151613.
CatatanParameter ini opsional. Jika Anda mengatur parameter ini, hanya sistem yang dapat membangun image. Anda tidak dapat membangun image secara manual.
Commit ID
Jumlah karakter yang akan diperoleh dari ID komit kode yang paling baru didorong. Secara default, enam karakter pertama digunakan. Anda dapat menyesuaikan penggeser untuk mengubah jumlah karakter.
CatatanParameter ini opsional. Jika Anda mengatur parameter ini, hanya sistem yang dapat membangun image. Anda tidak dapat membangun image secara manual.
Di langkah Build Configurations, konfigurasikan parameter lalu klik Confirm. Tabel berikut menjelaskan parameter.
Parameter
Deskripsi
Build Architecture
Arsitektur tempat Anda ingin membangun image. Anda dapat memilih beberapa arsitektur. Jika Anda memilih beberapa arsitektur, beberapa image kontainer untuk arsitektur tersebut dibangun untuk setiap tag image.
Build Parameters
Parameter waktu proses dari pembuatan image. Setiap parameter pembuatan adalah pasangan nilai-kunci yang peka huruf besar-kecil. Anda dapat mengonfigurasi maksimal 20 parameter pembuatan. Anda dapat mengatur parameter pembuatan untuk memodifikasi variabel lingkungan dalam Dockerfile dan membuat Dockerfile yang sama menunjukkan status yang berbeda.
Picu aturan pembuatan image.
Anda dapat menggunakan salah satu metode berikut untuk memicu aturan pembuatan image:
Di bagian Build Rules dari halaman Build, temukan aturan pembuatan image yang ingin Anda picu dan klik Build di kolom Actions.
Kirim kode ke cabang utama repositori kode sumber untuk memicu aturan pembuatan.
CatatanJika Anda ingin membatalkan tugas pembuatan image yang dipicu, di bagian Build Log dari halaman Build, temukan tugas pembuatan image dan klik Cancel di kolom Actions.
Jika Anda ingin melihat log pembuatan image, di bagian Build Log dari halaman Build, temukan tugas pembuatan image yang dipicu dan klik Log di kolom Actions.
Di panel navigasi sisi kiri, klik Image Tag. Jika image yang Anda buat ditampilkan, image tersebut telah dibangun.
Langkah 4: Verifikasi hasil
Di panel navigasi sisi kiri halaman manajemen repositori image yang dibuat, klik Tags. Di halaman yang muncul, lihat image yang dibangun.
Dalam contoh ini, dua image ditampilkan di kolom tag image main. Satu image mendukung sistem operasi Linux dan arsitektur AMD64, dan image lainnya mendukung sistem operasi Linux dan arsitektur ARM64.

Verifikasi bahwa image dapat digunakan pada mesin dengan sistem operasi Linux dan arsitektur AMD64 serta mesin dengan sistem operasi Linux dan arsitektur ARM64.
Jalankan perintah berikut pada mesin yang sistem operasi dan arsitekturnya adalah Linux dan AMD64.
docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:mainOutput yang diharapkan
Halo, amd64!Jalankan perintah berikut pada mesin yang sistem operasi dan arsitekturnya adalah Linux dan ARM64.
docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:mainOutput yang diharapkan
Halo, arm!
Image yang dibangun dapat digunakan oleh mesin dengan arsitektur yang berbeda.
Lampiran: Gunakan ekspresi reguler dalam grup penangkapan bernama
Grup penangkapan bernama
Grup penangkapan menempatkan konten yang cocok dalam sub-ekspresi dari ekspresi reguler ke dalam grup-grup yang dinamai dengan angka numerik atau nama eksplisit. Kemudian, Anda dapat merujuk grup-grup tersebut di dalam atau di luar ekspresi reguler. Grup penangkapan dapat diklasifikasikan menjadi grup penangkapan reguler dan grup penangkapan bernama. Bagian ini menjelaskan grup penangkapan bernama.
Format tipikal dari grup penangkapan bernama:
(?<name>Ekspresi)Anda dapat menggunakan ekspresi reguler berikut untuk mengonversi release-11-2-10 menjadi 11.2.10:
release-(?<major>\d*)-(?<minor>\d*)-(?<version>\d*) Ketika release-11-2-10 cocok dengan ekspresi reguler, konten yang cocok dari posisi-posisi yang sesuai dalam sub-ekspresi secara otomatis ditempatkan ke dalam grup-grup yang dinamai major, minor dan version. Kemudian, Anda dapat menggunakan template berikut untuk menghasilkan string 11.2.10.
${major}.${minor}.${version} Referensi
Untuk informasi tentang membangun image kontainer multi-arsitektur pada perangkat lokal, lihat Bangun dan dorong image multi-arsitektur pada perangkat lokal ke instance Container Registry Enterprise Edition.