全部产品
Search
文档中心

Container Registry:Bangun image kontainer multi-arsitektur

更新时间:Jul 02, 2025

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

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.

  1. Masuk ke konsol Container Registry.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di panel navigasi sisi kiri, klik Instances.

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

  5. Di panel navigasi sisi kiri halaman manajemen instance Enterprise Edition, pilih Repository > Repositories.

  6. Di halaman Repositories, klik Create Repository.
  7. Di langkah Repository Info, konfigurasikan parameter Namespace, Repository Name, Repository Type, Tags, Accelerated Image, Summary, dan Description. Lalu, klik Next.

  8. 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.

  1. Masuk ke konsol Container Registry.

  2. Di bilah navigasi atas, pilih wilayah.

  3. Di panel navigasi sisi kiri, klik Instances.

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

  5. Di panel navigasi sisi kiri halaman manajemen instance Enterprise Edition, pilih Repository > Repositories.

  6. Di halaman Repositories, temukan repositori image yang dibuat dan klik Manage di kolom Actions.

  7. 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.

    Catatan

    Setelah 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.

  8. Di langkah Tag, konfigurasikan parameter, klik Save, lalu klik Next. Tabel berikut menjelaskan parameter.

    Catatan

    Klik 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.

    Catatan

    Parameter 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.

    Catatan

    Parameter ini opsional. Jika Anda mengatur parameter ini, hanya sistem yang dapat membangun image. Anda tidak dapat membangun image secara manual.

  9. 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.

  10. 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.

    Catatan
    • Jika 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

  1. 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.多架构镜像

  2. 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:main

      Output 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:main

      Output 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.