All Products
Search
Document Center

Container Registry:Buat gambar kontainer multi-arsitektur

Last Updated:Jun 21, 2026

Menggunakan sumber daya berbasis ARM untuk men-deploy kontainer dapat secara signifikan mengurangi biaya. Namun, pendekatan ini meningkatkan beban pemeliharaan karena Anda harus membangun dan mengelola gambar terpisah untuk arsitektur yang berbeda, seperti x86 dan ARM. Fitur build multi-arsitektur di konsol ACR menyederhanakan proses ini dengan memungkinkan pengelolaan gambar untuk beberapa arsitektur dalam satu tag.

Prasyarat

  • Anda telah membuat instans Container Registry Enterprise Edition. Untuk informasi selengkapnya, lihat Create an Enterprise Edition instance.

  • Anda telah menghubungkan instans Anda ke platform hosting kode sumber. Untuk informasi selengkapnya, lihat Bind a source code hosting platform.

  • Anda telah mengonfigurasi proyek Anda untuk mendukung build pada arsitektur target.

Informasi latar belakang

  • Jika Anda hanya memilih satu arsitektur, sistem hanya akan membangun gambar untuk arsitektur tersebut dan mendorongnya dengan tag yang ditentukan.

  • Saat Anda memilih beberapa arsitektur, sistem build akan mendorong gambar untuk semua arsitektur yang dipilih ke repository image dengan tag yang sama. Klien seperti Docker dan containerd kemudian akan menarik gambar yang sesuai dengan arsitektur klien tersebut.

Tabel berikut menjelaskan arsitektur yang didukung.

Operating system

Architecture

Supported

Linux

amd64

Yes (Default architecture)

Linux

arm64

Yes

Linux

arm/v7

Yes

Linux

arm/v6

Yes

Windows

amd64

Not supported

Langkah 1: Siapkan proyek Anda

Siapkan repository kode sumber untuk build gambar Anda. Sebagai contoh, Anda dapat membuat proyek dengan menggunakan file Go dan Dockerfile berikut.

// Simpan sebagai hello.go
package main
import (
        "fmt"
        "runtime"
)
func main() {
        fmt.Printf("Hello, %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 repository image

Buat repository image dan hubungkan ke repository kode sumber. Sistem akan mendorong semua hasil build gambar yang dipicu dari repository kode sumber ke repository image ini.

  1. Masuk ke Container Registry console.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di panel navigasi kiri, pilih Instances.

  4. Di halaman Instances, klik instans Enterprise Edition yang ingin Anda kelola.

  5. Di panel navigasi kiri halaman detail instans, pilih Repository > Repositories.

  6. Di halaman Repositories, klik Create Repository.

  7. Di wizard Repository Info, konfigurasikan Namespace, Repository Name, Repository Type, Image Version, Accelerated Image, Summary, dan Description. Lalu, klik Next.

  8. Di wizard konfigurasi Code Source, atur Code Source, Build Settings, dan Build Rules, lalu klik Create Repository.

    Parameter

    Description

    Code Source

    Penyedia kode sumber.

    Build Settings

    • Automatically Build Images When Code Changes: Memicu aturan build saat Anda melakukan commit kode ke branch tertentu.

    • Build With Servers Deployed Outside Chinese Mainland: membangun gambar di pusat data di luar Tiongkok daratan dan mendorong gambar ke wilayah yang ditentukan. Pilih opsi ini jika Dockerfile Anda perlu mengunduh file dari situs di luar Tiongkok daratan dan koneksi jaringan lintas batas tidak stabil.

    • Build Without Cache: memaksa pengambilan ulang base image pada setiap build. Memilih opsi ini dapat memperpanjang waktu build gambar.

    Di halaman Repositories, klik repository image target. Jika Build muncul di panel navigasi kiri, repository image berhasil dihubungkan ke repository kode sumber.

Langkah 3: Buat aturan build multi-arsitektur

Untuk demonstrasi ini, kami menggunakan linux/amd64 dan linux/arm64 sebagai arsitektur build.

  1. Masuk ke Container Registry console.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di panel navigasi kiri, pilih Instances.

  4. Di halaman Instances, klik instans Enterprise Edition yang ingin Anda kelola.

  5. Di panel navigasi kiri halaman detail instans, pilih Repository > Repositories.

  6. Di halaman Repositories, temukan repository target dan klik Manage di kolom Actions.

  7. Di panel navigasi kiri, klik Build. Di bagian Build Rules, klik Add Build Rule. Di langkah Build Information, atur parameter dan klik Next.

    Parameter

    Description

    Type

    Jenis kode sumber yang akan dibangun. Nilai yang valid: Branch dan Tag.

    Branch/Tag

    Pilih atau masukkan branch atau tag. Ekspresi reguler didukung. Misalnya, jika Anda menggunakan ekspresi reguler release-(?<imageTag>\w*), perubahan kode di branch release-v1 secara otomatis memicu build gambar dengan tag v1. Untuk informasi selengkapnya, lihat Appendix: Named capturing groups for regular expressions.

    Catatan

    Setelah Anda mengatur ekspresi reguler, hanya build otomatis yang dipicu. Anda tidak dapat memicu build langsung secara manual.

    Dockerfile Directory

    Jalur ke Dockerfile, relatif terhadap root repository. Misalnya, jika Dockerfile berada di direktori root, masukkan /.

    Dockerfile Filename

    Nama file Dockerfile. Nilai default-nya adalah Dockerfile.

  8. Di langkah Image Version, atur parameter, klik Save, lalu klik Next.

    Catatan

    Klik Add Configuration untuk menambahkan tag gambar. Anda dapat menambahkan hingga tiga tag gambar.

    Parameter

    Description

    Image Version

    Tag gambar, misalnya latest. Ini mendukung named capturing groups untuk menggunakan konten yang ditangkap dari pengaturan Branch/Tag.

    Build Time

    Waktu ketika kode sumber didorong, dalam UTC+8. Format yang didukung adalah YYYYMMDD dan YYYYMMDDHHMM. Contoh: 20201015 dan 202010151613.

    Catatan

    Parameter ini opsional. Jika Anda memilih parameter ini, hanya build otomatis yang didukung dan Anda tidak dapat memicu build langsung secara manual.

    Commit ID

    ID commit dari push kode terbaru. Secara default, 6 karakter pertama digunakan. Anda dapat menggunakan slider untuk menyesuaikan panjangnya.

    Catatan

    Parameter ini opsional. Jika Anda memilih parameter ini, hanya build otomatis yang didukung dan Anda tidak dapat memicu build langsung secara manual.

  9. Di langkah Build Configurations, atur parameter build dan klik Confirm.

    Parameter

    Description

    Build Architecture

    Pilih arsitektur build. Build untuk arsitektur yang dipilih dijalankan secara paralel, dan gambar hasilnya dikaitkan dengan satu tag gambar.

    Build Parameters

    Argumen waktu proses untuk build gambar, ditentukan sebagai pasangan kunci-nilai yang case-sensitive. Anda dapat mengatur hingga 20 argumen build. Argumen ini dapat memodifikasi variabel lingkungan di Dockerfile, sehingga memungkinkan satu Dockerfile menghasilkan variasi gambar yang berbeda.

  10. Picu aturan build.

    Anda dapat memicu aturan build dengan dua cara:

    • Di halaman Build, di bagian Build Rules, temukan aturan build target dan klik Build di kolom Actions.

    • Dorong kode ke branch utama repository kode sumber Anda.

    Catatan
    • Untuk membatalkan tugas build yang sedang berjalan, buka halaman Build. Di bagian Build Log, temukan tugas target dan klik Cancel di kolom Actions.

    • Untuk melihat log tugas build, buka halaman Build. Di bagian Build Log, temukan tugas target dan klik Log di kolom Actions.

    Di bilah navigasi kiri, klik Image Version. Anda dapat melihat gambar yang telah dibangun, yang menunjukkan bahwa build berhasil.

Langkah 4: Verifikasi hasil build

  1. Setelah build selesai, buka halaman pengelolaan repository target dan klik Image Version di panel navigasi kiri untuk melihat gambar yang telah dibangun untuk tag target.

    Di daftar digest untuk tag gambar, Anda dapat melihat bahwa tag main mencakup gambar untuk linux/amd64 dan linux/arm64, yang mengonfirmasi keberhasilan build multi-arsitektur.

  2. Verifikasi gambar pada mesin dengan arsitektur linux/amd64 dan linux/arm64.

    • Pada mesin dengan arsitektur linux/amd64, jalankan perintah berikut:

      docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:main

      Output yang diharapkan:

      Hello, amd64!
    • Pada mesin dengan arsitektur linux/arm64, jalankan perintah berikut:

      docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:main

      Output yang diharapkan:

      Hello, arm64!

    Hasil ini menunjukkan bahwa gambar yang dibangun dapat digunakan pada mesin dengan arsitektur yang berbeda.

Apendiks: Named capturing groups

Named capturing groups

Capturing group menyimpan konten yang cocok dengan subekspresi dalam ekspresi reguler. Anda dapat mereferensikan grup ini nanti, baik di dalam maupun di luar ekspresi reguler. Grup dapat diberi nomor atau diberi nama secara eksplisit. Apendiks ini memberikan pengantar singkat tentang named capturing groups.

Format umum untuk named capturing group adalah sebagai berikut:

(?<name>Expression)

Anda dapat menggunakan named capturing group untuk mengubah release-11-2-10 menjadi 11.2.10. Ekspresi reguler yang sesuai adalah sebagai berikut:

release-(?<major>\d*)-(?<minor>\d*)-(?<version>\d*) 

Saat ekspresi reguler ini cocok dengan release-11-2-10, ekspresi tersebut secara otomatis menyimpan subekspresi yang cocok dalam grup bernama major, minor, dan version. Anda kemudian dapat menggunakan templat berikut untuk menghasilkan string 11.2.10:

${major}.${minor}.${version} 

Dokumen terkait

Untuk mempelajari cara membangun gambar kontainer multi-arsitektur secara lokal, lihat Build and push a multi-architecture image to Container Registry from your local machine.