实践笔记-03 docker buildx 使用


版本要求:docker版本不低于19.03,才能使用docker buildx

1.启用docker buildx

#查看docker buildx是否已开启
docker buildx version
# 没有开启,则执行一下命令
export DOCKER_CLI_EXPERIMENTAL=enabled
# 查看docker buildx是否正常运行
docker buildx ls

在这里插入图片描述

2.启用 binfmt_misc

docker桌面版(windows系统和macos系统默认是启用binfmt_misc的)。
Linux版本默认不支持构建arm架构镜像,因此需要自行安装启动:

# 内核低于4.X的版本建议先升级下内核,不然会出错。
#(最后面会贴上我安装时遇到的问题以及centos版本如何升级)

# 安装模拟器(用于多平台镜像构建)
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

# 验证是否开启binfmt_misc
ls -al /proc/sys/fs/binfmt_misc/

# 验证是否启用处理器
cat /proc/sys/fs/binfmt_misc/qemu-arm

在这里插入图片描述

3.从默认的构建器切换到多平台构建器

Docker默认会使用不支持多 CPU 架构的构建器,因此需要手动切换。

3.1创建buildkitd.toml文件(私有仓库是http没有证书的情况下,需要配置)

buildkitd.toml

debug = true
# insecure-entitlements allows insecure entitlements, disabled by default.
insecure-entitlements = [ "network.host", "security.insecure" ]

# optionally mirror configuration can be done by defining it as a registry.
# 这里配置私有库地址,可以配置多个。
#可以多个配置
[registry."XX.XX.XX.XX"]
  http = true
  insecure = true
#可以多个配置
[registry."XX.XX.XX.XX"]
http = true
insecure = true

3.2创建构建器并使用新创建的构建器

# 国内镜像(有ssl证书(https)的私有库时,直接用这个命令就可以了)
#docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master 

# 如果私有仓库是http没有证书的情况下需要指定 --driver-opt network=host 和 --config /etc/buildkit/buildkitd.toml 两个参数,
# 需要先创buildkitd.toml配置文件
# 另外需要在/etc/docker/daemon.json中添加"insecure-registries": ["image.xxxxxx.com"]
docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master --driver-opt network=host --config /home/buildkit/buildkitd.toml

# 使用新创建mybuilder-cn实例
docker buildx use mybuilder-cn
# 删除构建器
# docker buildx rm mybuilder-cn

4.构建多架构镜像并推送至harbor仓库

docker buildx build --platform linux/arm64,linux/amd64 -t 192.168.18.150/chenlf/server-center:1.0.0 . --push

在这里插入图片描述

5.遇到的问题

5.1内核版本低于4报错

5.1.1报错信息参考

在这里插入图片描述

5.1.2 centos7内核升级

linux内核版本升级(centos7)

5.2 私有仓为http构建镜像报错

以下两种错误均是没有ssl证书导致的。
在这里插入图片描述
在这里插入图片描述

相关推荐

  1. 02.03_111期_linux_gdb使用笔记

    2024-04-12 00:20:05       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 00:20:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 00:20:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 00:20:05       87 阅读
  4. Python语言-面向对象

    2024-04-12 00:20:05       96 阅读

热门阅读

  1. 电厂业务数据笔记

    2024-04-12 00:20:05       36 阅读
  2. C++内存管理(个人笔记)

    2024-04-12 00:20:05       37 阅读
  3. Vue中实现回退到上一级目录或者回退到首页

    2024-04-12 00:20:05       39 阅读
  4. Vue插件使用详细介绍

    2024-04-12 00:20:05       36 阅读
  5. 拥抱Linux,拥抱开源,拥抱未来

    2024-04-12 00:20:05       40 阅读
  6. Week6-LeetCode

    2024-04-12 00:20:05       34 阅读
  7. std::vector的核心框架接口的模拟实现bit::vector

    2024-04-12 00:20:05       32 阅读
  8. mysql学习笔记NO.2

    2024-04-12 00:20:05       39 阅读
  9. C# AOP最经典实现

    2024-04-12 00:20:05       25 阅读