docker 使用QEMU,构建多平台镜像;docker buildx 您所在的位置:网站首页 docker安装ubuntu架构 docker 使用QEMU,构建多平台镜像;docker buildx

docker 使用QEMU,构建多平台镜像;docker buildx

2023-07-28 10:16| 来源: 网络整理| 查看: 265

参考

buildx(github 安装QEMU文档)

build(Docker 官网文档)

QEMU(github安装文档)

构建多平台镜像

有3种方式:

使用QEMU模拟器。使用原生的节点来构建,通过docker context命令来切换,连接不同的docker server。参考通过使用--platform参数在Dockerfile里,来实现不同平台的镜像编译。(不知道是我不会用,还是不好用) 正文 开启 buildx

编辑 /etc/docker/daemon.json,添加"experimental": true选项

[root@]# cat /etc/docker/daemon.json { "experimental": true }

重启 docker

systemctl daemon-reload systemctl restart docker

检测是否成功开启,true表示开启了

[root@]# docker version -f '{{.Server.Experimental}}' true 安装QEMU

安装

[root@]# docker run --privileged --rm tonistiigi/binfmt --install all

快速测试

[root@]# docker run --rm arm64v8/alpine uname -a WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested Linux 869e16c62dd8 5.10.18-amd64-desktop #1 SMP Mon Mar 1 17:09:41 CST 2021 aarch64 Linux buildx构建amd和arm平台的两种镜像,并在各自的环境下使用

Dockerfile

FROM ubuntu

登录到docker,要推送镜像到 自己的 dockerhub 仓库

[root@]# docker login

添加一个 docker driver,会自动添加配置项,具体内部操作原因现在也还不清楚

[root@]# docker buildx ls [root@]# docker buildx create --name my-buildx [root@]# docker buildx use my-buildx

上面几个命令的详细输出:

# 查看 buildx 的支持驱动 [root@]# docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS default * docker default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6 # 创建driver,自定义名称 my-buildx [root@]# docker buildx create --name my-buildx my-buildx # 再次查看 drivers [root@]# docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS my-buildx docker-container my-buildx0 unix:///var/run/docker.sock inactive default * docker default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6 # 切换使用 my-buildx [root@]# docker buildx use my-buildx # 再次查看 [root@]# docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS my-buildx docker-container my-buildx0 unix:///var/run/docker.sock inactive default docker default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6

打镜像并推送

# qiangge80800880 是我的用户名,镜像打完,并推送到docker hub [root@]# docker buildx build --platform linux/arm64,linux/amd64 -t qiangge80800880/ubuntu-arm-test:v1 . --push

再次查看 buildx drivers

[root@]# docker buildx ls

详细输出:

[root@]# docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS my-buildx * docker-container my-buildx0 unix:///var/run/docker.sock running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6 default docker default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6

DockerHub可以看到有一个镜像tag有两个架构 在这里插入图片描述

在 x86和arm平台使用此镜像测试

amd

[root@]# uname -m x86_64 [root@]# docker run -it qiangge80800880/ubuntu-arm-test:v1 bash Unable to find image 'qiangge80800880/ubuntu-arm-test:v1' locally v1: Pulling from qiangge80800880/ubuntu-arm-test a70d879fa598: Pull complete c4394a92d1f8: Pull complete 10e6159c56c0: Pull complete Digest: sha256:a60e1f9dba411d8bf9c8f06147af7ea587cf539df082ce59cf63331761241cb2 Status: Downloaded newer image for qiangge80800880/ubuntu-arm-test:v1 root@0ddbf490e73b:/#

arm

root@ks-allinone:~# uname -m aarch64 root@ks-allinone:~# docker run -it qiangge80800880/ubuntu-arm-test:v1 bash Unable to find image 'qiangge80800880/ubuntu-arm-test:v1' locally v1: Pulling from qiangge80800880/ubuntu-arm-test 2b20d1a80822: Pull complete f4e993c4ee9a: Pull complete c2befefc5146: Pull complete Digest: sha256:a60e1f9dba411d8bf9c8f06147af7ea587cf539df082ce59cf63331761241cb2 Status: Downloaded newer image for qiangge80800880/ubuntu-arm-test:v1 root@68b90968bcc7:/# QEMU 卸载 docker run --privileged --rm tonistiigi/binfmt --uninstall qemu-aarch64 PS

如果帮助到你的话,点个赞鼓励下,欢迎加入我的置顶博客的javaweb交流群,不搞带课推广,让我们一起向诗靠拢。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有