docker 构建多架构镜像

参考别人文档https://blog.csdn.net/alex_yangchuansheng/article/details/103343697

有时候我们需要支持一个镜像不同架构或者系统拉取是不同的效果,用户不用通过tag的方式来获取
类似:mariadb Official Image

docker 构建多架构镜像_第1张图片

使用buildx方式

Docker 版本不低于 19.03,
同时还要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用。
可以通过下面的命令来为当前终端启用 buildx 插件
export DOCKER_CLI_EXPERIMENTAL=enabled

永久开启
> vim /etc/docker/deamon.json
{
  "registry-mirrors": ["https://XXXXX.mirror.aliyuncs.com"],
	"experimental":true
}
加入:
> "experimental":true

查看是否开启

docker buildx version

github.com/docker/buildx v0.3.1-tp-docker 6db68d029599c6710a32aa7adcba8e5a344795a

docker info 可以查看是否开启

第一步 创建一个 构建器

  • docker buildx create --use --name mybuilder
  • docker buildx inspect mybuilder --bootstrap
  • docker buildx ls

第二步 Dockerfile

FROM alpine

WORKDIR /opt

ARG TARGETARCH
COPY ./linux/${TARGETARCH} /opt/
# ${TARGETARCH} 等于--platform linux/arm64,linux/amd64 中的amd64 arm64

第三步 构建并推送

docker login hub.docker.com -u username -p password
docker buildx build --platform linux/arm64,linux/amd64 -t video-analysis/lqhandsome:v1 . --push

拉取指定ARCH 需要开启测试版(experimental)

DOCKER_CLI_EXPERIMENTAL=enabled docker pull video-analysis/lqhandsome:v1 --platform=amd64
# 或者
docker pull video-analysis/lqhandsome:v1 --platform=amd64

还有一种方式比较麻烦,也可以完成

参考 https://blog.csdn.net/dev_csdn/article/details/79138424

有疑问请联系我 [email protected] 一起交流

你可能感兴趣的:(docker,docker,linux)