Docker buildx 安装
  1pC2C06v0rDZ 2023年11月02日 34 0

简介

Docker buildx是docker的一个插件,它包含如下作用:

支持Moby BuildKit的所有特性;

可以跨CPU架构编译镜像;

可以在跨多节点同时编译镜像。

本文主要介绍其在Linux上的安装过程。

备注:在Windows和macOs上,Docker Desktop已经包含了Docker Buildx,无需额外安装,可通过命令docker buildx version 确认其是否安装成功。

开启实验室特性

docker客户端开启实验室特性。在客户端的配置文件~/.docker/config.json中加入如下配置项,如果~/.docker/config.json文件不存在,则创建该文件。

{
"experimental": "enabled"
}

Docker buildx 安装_docker

docker服务端开启实验室特性。在配置文件/etc/docker/daemon.json中加入如下配置项即可,如果/etc/docker/daemon.json文件不存在,则创建该文件。

{
	"experimental": true
}

Docker buildx 安装_docker_02

$systemctl daemon-reload
$systemctl restart docker

# 确认实验室性能开启。
$docker version

查看是否已经开启实验室特性,如下图所示,如果都为true,说明Client和Server都已经开启完毕

Docker buildx 安装_buildx_03

安装docker buildx

$ mkdir -pv ~/.docker/cli-plugins/
$ wget -O ~/.docker/cli-plugins/docker-buildx \
    https://github.com/docker/buildx/releases/download/v0.5.1/buildx-v0.5.1.linux-amd64

$ chmod a+x ~/.docker/cli-plugins/docker-buildx

确认安装成功

$docker buildx version
$docker buildx ls

安装模拟器

安装模拟器的主要作用是让buildx支持跨CPU架构编译。

$ docker buildx ls 
NAME/NODE     DRIVER/ENDPOINT   STATUS   PLATFORMS
default       docker
  default     default           running   linux/amd64

# 如果Platforms列只有一个本机架构,则需要继续执行下面步骤;如果已经包含了多种平台,且包含你想要的平台,则你无需再安装。

首先查看是否已经安装模拟器

模拟器对饮的仓库名称是:tonistiigi/binfmt:latest ,如果你的环境能联网,最简单的方法是

#执行这一步的时候要记得升级内核版本为4以上,否则会报错,升级内核网址为(亲测)
https://blog.csdn.net/jks212454/article/details/128833232
#通知Docker使用qemu
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
下载所有架构
$ docker run --privileged --rm tonistiigi/binfmt --install all

# 验证模拟器是否安装成功
$ docker buildx ls 
default       docker
  default     default    running   linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

# 查看某个,检查aarch64是否安装成功
$ cat /proc/sys/fs/binfmt_misc/qemu-aarch64
enabled
interpreter /usr/bin/qemu-aarch64
flags: OCF
offset 0
magic 7f454c460201010000000000000000000200b7

如果你的环境不能联网,则需先在外网环境下载好镜像,导入内网之后,再安装:

# 外网下载镜像,注意(如果你的内网环境机器是arm架构,就下载arm版本,如果你的内网环境机器是amd架构,就下载amd版本;这里我下载的是arm版本)
$ docker pull tonistiigi/binfmt:latest@sha256:01882a96113f38b1928a5797c52f7eaa7e39acf6cc15ec541c6e8428f3c2347d
# 导出镜像
$ docker save -o tonistiigi_binfmt_arm64.tar f1d8c13be37e
# 将导出的镜像上传至内网服务器
$ scp tonistiigi_binfmt_arm64.tar xxxx:/xxx
# 在内网机器执行如下命令,导入镜像
$ docker load -i tonistiigi_binfmt_arm64.tar
# 安装模拟器
$ docker run --privileged --rm tonistiigi/binfmt --install all

# 验证是否安装成功
$ docker buildx ls 
default       docker
  default     default    running   linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

# 验证arm机器上的amd模拟器是否安装成功,则执行如下命令,输出结果包含enable即可
$ cat /proc/sys/fs/binfmt_misc/qemu-x86_64
enabled

# 如果你是amd机器,需要验证arm模拟器是否安装成功,则执行如下命令,输出结果包含enable即可
$ cat /proc/sys/fs/binfmt_misc/qemu-aarch64
enabled
$vim /etc/buildkitd.toml  添加私库地址,否则无法上传
[registry."172.16.2.15:80"]
  http = true
  insecure = true

#创建builder,并指定配置文件
$docker buildx create --use --name newbuilder --config buildkitd.toml

#构建arm和x86镜像并上传
$cd /root/tomcat
$docker buildx build -f tomcatfile  --platform linux/amd64,linux/arm64 -t 172.16.2.15:80/unis/tomcat:8.5.3170318 --push .

Docker buildx 安装_docker_04


Docker buildx 安装_docker_05

Docker buildx 安装_buildx_06

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   32   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   33   0   0 Docker
  LE2wsiBPlOhg   2023年12月06日   33   0   0 Dockercentos
  DnoStTHsc0vp   2023年12月11日   27   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   103   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   36   0   0 Dockercentos
1pC2C06v0rDZ