前言

现在想要实现不同架构,如 amd64、arm64 都用一个镜像名拉取到所需的镜像。可以这样实现:

1. 准备好两个镜像

1
2
image-test/etcd-amd64:v3.3.18
image-test/etcd-arm64:v3.3.18

以上两个镜像分别对应 amd64 架构和 arm64 架构。

注意,以上两个镜像需要提前上传至镜像仓库。

2. 创建 manifest 列表

1
2
3
4
# docker manifest create MANIFEST_LIST MANIFEST [MANIFEST...]
docker manifest create image-test/etcd:v3.3.18 \
image-test/etcd-arm64:v3.3.18 \
image-test/etcd-amd64:v3.3.18

以上两个镜像分别对应 amd64 架构和 arm64 架构。如果执行上述两条命令遇见报错,docker manifest create is only supported on a Docker cli with experimental cli features enabled ,应该是 Docker 版本低导致。

可以通过如下命令启用实验性质后再试

1
export DOCKER_CLI_EXPERIMENTAL="enabled"

3. 检查 manifest 列表

1
docker manifest inspect image-test/etcd:v3.3.18

4. 推送 manifest 列表

1
docker manifest push image-test/etcd:v3.3.18

参考文档:

  1. 构建多种系统架构支持的 Docker 镜像

  2. docker manifest 使用