docker buildx 在x86 架构平台打包arm 平台镜像

首先声明:

一、本人学习记录,以下操作经过本人实测完全正确

查看本地系统和容器内部系统

本地系统架构:
root@pdz-vm:/home/nodete/node# uname -a
Linux pdz-vm 6.5.0-28-generic #29~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr  4 14:39:20 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

进入容器:
root@pdz-vm:/home/nodete/node# docker exec -it vue_arm3 sh
/app # uname -a


容器系统架构:
Linux 75f10c72c34b 6.5.0-28-generic #29~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr  4 14:39:20 UTC 2 aarch64 Linux

二、转载出处来源,原作者有问题可联系我 

 因为文章写转载需要原作者同意,我没有取得授权,只能写原创,特此声明

​​y​​​​​​​​​​​​​​​​​​​​​在x86平台下使用Buildx构建跨平台镜像并运行arm应用 – ZegWeのBlogicon-default.png?t=N7T8https://blog.zegwe.me/2021/05/27/%E5%9C%A8x86%E5%B9%B3%E5%8F%B0%E4%B8%8B%E4%BD%BF%E7%94%A8buildx%E6%9E%84%E5%BB%BA%E8%B7%A8%E5%B9%B3%E5%8F%B0%E9%95%9C%E5%83%8F%E5%B9%B6%E8%BF%90%E8%A1%8Carm%E5%BA%94%E7%94%A8/

以下正文:

需求背景:我有一个项目,需要运行在不同架构的平台上,需要基于docker运行,必须给项目打包成docker镜像

1. 安装 qemu 多平台支持()

运行以下容器:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

该容器会为你的设备安装 qemu 多平台支持,如果你需要运行跨平台容器,也会用到它。

2. 创建新的 builder 实例并设为默认

docker buildx create --use --name mybuilder

看到输出 mybuilder 即表示创建成功,使用 --use 指令将在 builder 实例创建完成时自动将其设为默认,否则需要手动使用 docker buildx use mybuilder 将创建的实例设为默认。

注意:

第一步和第二歩必须执行,不然第三歩就报错

3. 使用命令打包

经过本人实测,我的命令如下:

docker buildx build -f ./dockerfile -t imageName --platform=linux/arm64 --load .

请注意:我转载链接,原作者在结尾的命令是 --push 这是推送到远程仓库,我使用的是 --load 表示打包完成送到本地镜像,

4. 查验

查看镜像是否存在

root@pdz-vm:/home/nodete/node# docker images
REPOSITORY                   TAG               IMAGE ID       CREATED          SIZE
vue_arm3                     latest            e5600403ce2b   16 minutes ago   229MB

使用命令:

docker run -d -p 3601:3601 --name vue_arm3 vue_arm3

运行查看是否正常

root@pdz-vm:/home/nodete/node# docker ps
CONTAINER ID   IMAGE                           COMMAND                   CREATED             STATUS             PORTS                                                                                  NAMES
75f10c72c34b   vue_arm3                        "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes      0.0.0.0:3601->3601/tcp, :::3601->3601/tcp                                              vue_arm3

你可能感兴趣的:(docker,容器,运维)