Todos os produtos
Search
Central de documentação

Container Registry:Criar imagens de contêiner multiarquitetura

Última atualização: Jul 03, 2026

O uso de recursos baseados em ARM para implantar contêineres reduz significativamente os custos. No entanto, essa abordagem aumenta a sobrecarga de manutenção ao exigir a criação e o gerenciamento de imagens separadas para diferentes arquiteturas, como x86 e ARM. O recurso de compilação multiarquitetura no console do ACR simplifica esse processo e permite gerenciar imagens para várias arquiteturas com uma única tag.

Pré-requisitos

Informações básicas

  • Se você selecionar apenas uma arquitetura, o sistema compilará uma imagem exclusivamente para ela e a enviará com a tag especificada.

  • Ao selecionar múltiplas arquiteturas, o sistema de compilação envia as imagens de todas as arquiteturas escolhidas para o repositório de imagens com a mesma tag. Clientes como docker e containerd baixam automaticamente a imagem correspondente à arquitetura do cliente.

A tabela a seguir descreve as arquiteturas compatíveis.

Sistema operacional

Arquitetura

Compatível

Linux

amd64

Sim (arquitetura padrão)

Linux

arm64

Sim

Linux

arm/v7

Sim

Linux

arm/v6

Sim

Windows

amd64

Não compatível

Etapa 1: Preparar seu projeto

Prepare o repositório de código-fonte para a compilação da imagem. Para fins de demonstração, crie um projeto utilizando o seguinte arquivo Go e Dockerfile.

// Save as 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"]

Etapa 2: Criar um repositório de imagens

Crie um repositório de imagens e vincule-o a um repositório de código-fonte. O sistema enviará todas as compilações de imagem acionadas a partir do repositório de código-fonte para este repositório de imagens.

  1. Faça login no Console do Container Registry.

  2. Na barra de navegação superior, selecione uma região.

  3. No painel de navegação à esquerda, escolha Instances.

  4. Na página Instances, clique na instância Enterprise Edition que deseja gerenciar.

  5. No painel de navegação à esquerda da página de detalhes da instância, escolha Repository > Repositories.

  6. Na página Repositories, clique em Create Repository.

  7. No assistente Repository Info, configure Namespace, Repository Name, Repository Type, Image Version, Accelerated Image, Summary e Description. Em seguida, clique em Next.

  8. No assistente de configuração Code Source, defina Code Source, Build Settings e Build Rules, e clique em Create Repository.

    Parâmetro

    Descrição

    Code Source

    O provedor de código-fonte.

    Build Settings

    • Compilar imagens automaticamente quando houver alterações no código: aciona uma regra de compilação ao fazer commit de código em uma branch.

    • Build With Servers Deployed Outside Chinese Mainland: compila a imagem em um data center fora da China continental e a envia para a região especificada. Selecione esta opção se o seu Dockerfile precisar baixar arquivos de sites fora da China continental e a conexão de rede transfronteiriça for instável.

    • Build Without Cache: força uma nova busca da imagem base para cada compilação. Selecionar esta opção pode aumentar o tempo de compilação da imagem.

    Na página Repositories, clique no repositório de imagens de destino. Se Build aparecer no painel de navegação à esquerda, o repositório de imagens foi vinculado com sucesso ao repositório de código-fonte.

Etapa 3: Criar uma regra de compilação multiarquitetura

Para esta demonstração, utilizamos linux/amd64 e linux/arm64 como arquiteturas de compilação.

  1. Faça login no Console do Container Registry.

  2. Na barra de navegação superior, selecione uma região.

  3. No painel de navegação à esquerda, escolha Instances.

  4. Na página Instances, clique na instância Enterprise Edition que deseja gerenciar.

  5. No painel de navegação à esquerda da página de detalhes da instância, escolha Repository > Repositories.

  6. Na página Repositories, localize o repositório de destino e clique em Manage na coluna Actions.

  7. No painel de navegação à esquerda, clique em Build. Na seção Build Rules, clique em Add Build Rule. Na etapa Build Information, defina os parâmetros e clique em Next.

    Parâmetro

    Descrição

    Type

    O tipo de código-fonte para compilação. Valores válidos: Branch e Tag.

    Branch/Tag

    Selecione ou insira uma branch ou tag. Há suporte para expressões regulares. Por exemplo, ao usar a expressão regular release-(?<imageTag>\w*), uma alteração de código na branch release-v1 aciona automaticamente uma compilação para uma imagem com a tag v1. Para mais informações, consulte Apêndice: Grupos de captura nomeados para expressões regulares.

    Nota

    Após definir uma expressão regular, apenas compilações automáticas serão acionadas. Não é possível acionar manualmente uma compilação imediata.

    Dockerfile Directory

    O caminho para o Dockerfile, relativo à raiz do repositório. Por exemplo, se o Dockerfile estiver no diretório raiz, insira /.

    Dockerfile Filename

    O nome do arquivo Dockerfile. O valor padrão é Dockerfile.

  8. Na etapa Image Version, defina os parâmetros, clique em Save e, em seguida, clique em Next.

    Nota

    Clique em Add Configuration para adicionar tags de imagem. É possível adicionar até três tags de imagem.

    Parâmetro

    Descrição

    Image Version

    A tag da imagem, como latest. Oferece suporte a grupos de captura nomeados para utilizar conteúdo capturado da configuração Branch/Tag.

    Build Time

    O horário em que o código-fonte foi enviado, em UTC+8. Os formatos compatíveis são YYYYMMDD e YYYYMMDDHHMM. Exemplos: 20201015 e 202010151613.

    Nota

    Este parâmetro é opcional. Se selecionado, apenas compilações automáticas são suportadas e não é possível acionar manualmente uma compilação imediata.

    Commit ID

    O ID de commit do envio de código mais recente. Por padrão, os primeiros 6 caracteres são utilizados. Use o controle deslizante para ajustar o comprimento.

    Nota

    Este parâmetro é opcional. Se selecionado, apenas compilações automáticas são suportadas e não é possível acionar manualmente uma compilação imediata.

  9. Na etapa Build Configurations, defina os parâmetros de compilação e clique em Confirm.

    Parâmetro

    Descrição

    Build Architecture

    Selecione as arquiteturas de compilação. As compilações para as arquiteturas selecionadas são executadas em paralelo, e as imagens resultantes são associadas a uma única tag de imagem.

    Build Parameters

    Argumentos de tempo de execução para a compilação da imagem, especificados como pares chave-valor sensíveis a maiúsculas e minúsculas. É possível definir até 20 argumentos de compilação. Esses argumentos podem modificar variáveis de ambiente no Dockerfile, permitindo que um único Dockerfile produza diferentes variações de imagem.

  10. Acione a regra de compilação.

    Existem duas maneiras de acionar a regra de compilação:

    • Na página Build, na seção Build Rules, localize a regra de compilação de destino e clique em Build na coluna Actions.

    • Envie código para a branch principal do seu repositório de código-fonte.

    Nota
    • Para cancelar uma tarefa de compilação em execução, acesse a página Build. Na seção Build Log, localize a tarefa de destino e clique em Cancel na coluna Actions.

    • Para visualizar o log de uma tarefa de compilação, acesse a página Build. Na seção Build Log, localize a tarefa de destino e clique em Log na coluna Actions.

    Na barra de navegação à esquerda, clique em Image Version. A imagem compilada estará visível, indicando que a compilação foi bem-sucedida.

Etapa 4: Verificar o resultado da compilação

  1. Após a conclusão da compilação, acesse a página de gerenciamento do repositório de destino e clique em Image Version no painel de navegação à esquerda para visualizar as imagens compiladas para a tag de destino.

    Na lista de resumos (digest) da tag de imagem, é possível ver que a tag main inclui imagens tanto para linux/amd64 quanto para linux/arm64, confirmando uma compilação multiarquitetura bem-sucedida.

  2. Verifique a imagem em máquinas com arquiteturas linux/amd64 e linux/arm64.

    • Em uma máquina com arquitetura linux/amd64, execute o seguinte comando:

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

      Saída esperada:

      Hello, amd64!
    • Em uma máquina com arquitetura linux/arm64, execute o seguinte comando:

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

      Saída esperada:

      Hello, arm64!

    Os resultados demonstram que a imagem compilada funciona corretamente em máquinas com diferentes arquiteturas.

Apêndice: Grupos de captura nomeados

Grupos de captura nomeados

Um grupo de captura salva o conteúdo correspondido por uma subexpressão dentro de uma expressão regular. É possível referenciar esse grupo posteriormente, seja dentro ou fora da expressão regular. Os grupos podem ser numerados ou nomeados explicitamente. Este apêndice apresenta uma breve introdução aos grupos de captura nomeados.

O formato geral para um grupo de captura nomeado é o seguinte:

(?<name>Expression)

Utilize um grupo de captura nomeado para converter release-11-2-10 em 11.2.10. A expressão regular correspondente é:

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

Quando essa expressão regular corresponde a release-11-2-10, ela armazena automaticamente as subexpressões correspondentes nos grupos chamados major, minor e version. Em seguida, use o seguinte modelo para gerar a string 11.2.10:

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

Documentos relacionados

Para saber como criar imagens de contêiner multiarquitetura localmente, consulte Criar e enviar uma imagem multiarquitetura para o Container Registry a partir da sua máquina local.