为什么我能够在arm64上运行这个镜像?

问题描述 投票:0回答:1

由于我在 Mac 1 上,我认为尝试“docker run”此映像时会出现错误,但我没有。

调用

make build
make image
构建,然后推送到远程。

生成文件:

.PHONY: build
build:
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -v -o ./dist/retry main.go

.PHONY: image
image: build
    docker build -t "my-repo/my-image:latest" --target retry .

Dockerfile:

####################################################################################################
# base
####################################################################################################
FROM alpine:3.12.3 as base
RUN apk update && apk upgrade && \
    apk add ca-certificates && \
    apk --no-cache add tzdata

COPY dist/retry /bin/retry
RUN chmod +x /bin/retry

####################################################################################################
# retry
####################################################################################################
FROM scratch as retry
ARG ARCH
COPY --from=base /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=base /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=base /bin/retry /bin/retry
ENTRYPOINT [ "/bin/retry" ]

我既可以在本地也可以通过我们的 CI 拉取并运行它,我相信 CI 使用 amd64 机器。

docker cpu-architecture arm64
1个回答
0
投票

Mac 版 Docker 允许您运行与您所在架构不同的架构的映像。 如果有多个可用架构(例如,如果您构建并推送了多个版本),您甚至可以使用

--platform
命令上的
docker run
标志指定所需的架构。

© www.soinside.com 2019 - 2024. All rights reserved.