docker构建多平台镜像
前言
准备一份Dockerfile文件例如:
bash
# Dockerfile文件内容
FROM nginx:stable
EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]对应的构建命令为docker build . -t nginx-demo。
我们以这份简单的docker配置文件为例,介绍下如果利用docker buildx命令构建一个可以支持多个平台的docker镜像。
操作流程
- 首先执行下
bash
docker buildx ls查看本地构建器列表,顺序验证下本地的docker版本是否支持buildx命令,低版本docker不会内置buildx命令,执行后会报错
- 本地构建器列表会有一个默认的名叫
default的构建器,macos电脑上无法直接用,需要通过命令
bash
docker buildx create --use --name mybuilder创建一个新的构建器。--name mybuilder表示新的构建器名称叫mybuilder,--use表示立即使用当前这个新建的构建器
- 然后我们需要修改下原始的
Dockerfile文件,加上--platform=$BUILDPLATFORM
bash
# 修改后的Dockerfile文件内容
FROM --platform=$BUILDPLATFORM nginx:stable
EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]- 一切准备就绪后使用新的构建命令
docker buildx build . -t nginx-demo --platform=linux/arm64,windows/amd64 --push。其中--platform参数后面拼接需要支持的平台。--push表示构建完立即推送到远程docker仓库。至此我们实现里跨平台镜像的构建。