docker构建多平台镜像
docker构建多平台镜像
Pei场景:当我打包本地项目为docker镜像时,因为本地电脑是m1 mac mini,默认打包出来的镜像是linux/arm64,而远程服务器需要使用linux/amd64镜像,所以需要本地电脑能打包出linux/amd64镜像
以下内容有GPT-4o辅助编写
默认你电脑已安装docker,如果没安装,请参考docker学习
安装 Docker Buildx
docker buildx
是 Docker CLI 的一个插件,如果使用的是 Docker 19.03 或更高版本,它会默认安装和启用。可以通过以下命令检查你的 Docker 版本和 Buildx 是否已经启用:
1 | docker version |
如果 Buildx 没有启用,可以通过以下步骤安装并启用:
下载并安装 Buildx 插件(适用于未默认安装的 Docker 版本):
- 在 Linux 上:
1
2
3mkdir -p ~/.docker/cli-plugins
curl -SL https://github.com/docker/buildx/releases/latest/download/docker-buildx-linux-amd64 -o ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx - 在 macOS 上(使用 Docker Desktop 的情况下):通过 Docker Desktop 安装管理插件即可。
创建和使用 Buildx Builder
创建一个新的 buildx 构建实例,并设置为默认实例:
1 | docker buildx create --name mybuilder --use |
激活后,可以通过以下命令查看当前的构建实例:
1 | docker buildx inspect --bootstrap |
构建多平台镜像
使用 docker buildx 构建多平台镜像需要指定目标平台。平台可以是 linux/amd64, linux/arm64 等。
下面是一个构建多平台镜像的示例步骤:
- 构建并推送多平台镜像到 Docker Hub:
假设你已经有一个 Dockerfile,使用以下命令构建并推送:
1 | docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/yourimage:tag --push . |
--platform
参数用于指定要构建的架构。-t
参数用于标记镜像。--push
参数在构建后自动将镜像推送到 Docker Hub 或指定的镜像仓库。
- 仅构建多平台镜像而不推送:
如果只想在本地构建多平台镜像,而不立即推送,可以使用 –load 选项:注意:–load 选项只支持单个平台加载。如果需要多个平台,建议使用 –push1
docker buildx build --platform linux/amd64,linux/arm64 -t yourusername/yourimage:tag --load .
实践:打包指定平台镜像,并推送到个人阿里镜像库
申请免费个人仓库:阿里云容器镜像服务
在本地Dockerfile下执行打包命令
镜像名为myapp,版本为0.0.1,–load表示将构建的镜像加载到本地,不推送到远程仓库1
docker buildx build --platform linux/amd64 -t myapp:0.0.1 --load .
docker login登录阿里云个人仓库账号
输入平台账号密码即可标记本地镜像
registry.cn-hangzhou.aliyuncs.com/zxp_learn为我的阿里云个人镜像仓库1
docker tag myapp:0.0.1 registry.cn-hangzhou.aliyuncs.com/zxp_learn/myapp:0.0.1
推送镜像到仓库
1
docker push registry.cn-hangzhou.aliyuncs.com/zxp_learn/myapp:0.0.1
在需要使用的其他电脑/服务器拉取镜像
1
docker pull registry.cn-hangzhou.aliyuncs.com/zxp_learn/myapp:0.0.1
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果