问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Docker在x86系统下构建ARM64架构镜像的完整指南

创作时间:
作者:
@小白创作中心

Docker在x86系统下构建ARM64架构镜像的完整指南

引用
1
来源
1.
https://www.cnblogs.com/pkyit/p/18263017

随着越来越多的服务器采用ARM架构,如何在x86环境下构建ARM64架构的Docker镜像成为了一个实用的技能。本文将详细介绍如何使用Docker的Buildx插件在x86系统下构建ARM64架构的镜像。

一、启用Docker Buildx插件

Docker Buildx是Docker的CLI插件,来自于Moby BuildKit。首先需要确保Docker版本不低于19.10,可以通过以下命令查看Docker版本:

如果Docker版本符合要求,接下来启用Docker Buildx功能:

编辑Docker的配置文件 /etc/docker/daemon.json,在配置文件中新增如下标签对:

"experimental": true

重启Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

检查Docker Buildx版本:

docker buildx version

在当前的x86_64架构的机器上运行一个特权Docker容器,启用binfmt_misc来运行非x86架构的Docker镜像:

docker run --rm --privileged docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64-amd64

运行以下命令检查是否支持ARM64架构的编译工作:

ls -al /proc/sys/fs/binfmt_misc/

接下来创建一个新的支持多架构的构建器:

docker buildx create --use --name mybuilder
docker buildx inspect mybuilder --bootstrap
docker update --restart=always buildx_buildkit_mybuilder0

检查这个构建器:

docker buildx ls

如图所示,这个构建器可以构建Linux/amd64和Linux/arm64的镜像。

二、编写Dockerfile并构建多架构镜像

以制作一个Java运行环境的镜像为例:

# 制作一个Java基础镜像
FROM alpine:3.18.7
LABEL maintainer="pkyit"
RUN apk add --no-cache openjdk8-jre tzdata curl
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

运行以下命令构建多架构镜像:

docker buildx build  \
-t registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 \
-f Dockerfile .  \
--platform linux/amd64,linux/arm64 --push

三、验证

等待片刻,显示已经构建了Linux下的amd64和arm64的2个镜像并且推送到阿里云的私服仓库中了。

不妨把arm64架构的镜像拉取下来验证一下看看是不是arm64架构的:

# 拉取指定架构的镜像
docker pull --platform=linux/arm64 registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7
# 检查指定镜像的架构
docker inspect  registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 | grep Architecture

以上就是Docker多架构构建镜像的全部流程。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号