docker
docker 部署合集
docker搭建OpenLDAP
docker-compose
phpLdapAdmin 创建用户和组
jenkins 集成 ldap
添加memberOf模块
gitlab 集成ldap
OpenLDAP多主复制(基于docker容器模式部署)
ldap 日志
LDAP自助密码服务平台
cadvisor
开放 端口 和 套接字
docker命令
Weave Scope
cmd entrypoint
docker-compose 删除数据卷
docker slim
面试
harbor 更新证书
Docker Build Cache 缓存清理
使用远程节点构建多架构 Docker 镜像
本文档使用 MrDoc 发布
-
+
首页
使用远程节点构建多架构 Docker 镜像
### 创建构建器 创建 multi_node_builder 构建器,并指定一个名为 node_amd64 的本地节点: ``` docker buildx create \ --name multi_node_builder \ --node node_amd64 \ --platform linux/amd64 ``` `注意 --platform 参数,此参数设置了该节点支持的架构为 linux/amd64。输出 multi_node_builder 这个名称表示创建成功,但还未结束。` `我们再次执行 buildx create 命令,但加上 --append 选项表示这是一个追加设置。添加名为 node_arm64 的远程节点到 multi_node_builder 构建器:` ``` # 在同一台机器上运行 docker buildx create \ --name multi_node_builder \ --append \ --node node_arm64 \ --platform linux/arm64,linux/arm64/v8,linux/arm/v7,linux/arm/v6,linux/arm/v5 \ ssh://root@10.88.50.212 # 这里的 10.88.50.212 是一个示例 IP,它实际上是我在本地创建的 LXC 容器。 # 本机可以免密ssh 到 10.88.50.212 ``` 注意 --platform 参数,此参数设置了该节点支持的架构为 linux/arm64 和一些其它 ARM 架构版本。同样的,输出 multi_node_builder 这个名称表示创建成功。 ### 启用构建器 ``` 执行以下命令启用构建器: docker buildx use multi_node_builder docker buildx inspect --bootstrap # 这个命令会自动在这两个节点上部署 moby/buildkit 服务,请不要删除它们。 ``` 成功输出如下: ``` Name: multi_node_builder Driver: docker-container Last Activity: 2024-07-02 18:15:49 +0000 UTC Nodes: Name: node_amd64 Endpoint: unix:///var/run/docker.sock Error: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/containers/buildx_buildkit_node_amd64/json": context deadline exceeded Name: node_arm64 Endpoint: ssh://root@10.88.50.212 Error: Get "http://docker.example.com/v1.45/containers/buildx_buildkit_node_arm64/json": context deadline exceeded ``` ### 查看构建器 使用以下命令查看当前的构建器实例列表: ``` docker buildx ls ``` 输出如下: ``` NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS multi_node_builder* docker-container \_ node_amd64 \_ unix:///var/run/docker.sock running v0.14.1 linux/amd64*, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386 \_ node_arm64 \_ ssh://root@10.88.50.212 running v0.14.1 linux/arm64*, linux/arm/v7*, linux/arm/v6*, linux/arm/v5*, linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386 default docker \_ default \_ default running v0.11.7+435cb77e369c linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/amd64/v4, linux/386 ``` 注意看 multi_node_builder 后面有个星号,代表当前默认使用的构建器实例。此实例有两个节点,一个是本地节点(node_amd64),另一个是远程节点(node_arm64)。 理想情况下,我们的远程节点应该是 ARM64 架构的服务器。此处我为了举例,使用了一个本地的容器替代。 ### 测试构建 ``` docker buildx build . --platform=linux/amd64,linux/arm64 -t www.baidu.com/test/test-live-backmanager:19247 --provenance=false --no-cache --push ``` 我指定了两个架构的 --platform 参数值,分别对应 multi_node_builder 构建器实例中的两个节点各自优先的架构。现在分别看本地和远程节点的 htop 输出,会发现两个节点在同时构建,且构建的架构各不相同。
admin
2026年4月20日 12:50
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码