验证 Docker Buildx 构建是否实际使用本机节点

问题描述 投票:0回答:1

如何验证 Docker Buildx 构建实际使用给定平台的本机节点?

我在 x64 Linux 上有一个名为

maven
的基于 QEMU 的多平台 Buildx 构建器。为此,我附加了一个 Mac Mini 作为 Arm 构建的本机节点。

$ docker buildx ls
NAME/NODE  DRIVER/ENDPOINT             STATUS   BUILDKIT PLATFORMS
builder    docker-container                              
  builder0 unix:///var/run/docker.sock inactive          
maven *    docker-container                              
  maven0   unix:///var/run/docker.sock running  v0.11.0  linux/amd64*, linux/amd64/v2, linux/arm64, ....
  mac-mini ssh://[email protected]    running  v0.11.5  linux/arm64*, linux/amd64, linux/amd64/v2, ...

此外,我通过构建“Hello World”图像验证了设置是否确实有效。

$ docker buildx build --progress plain --builder maven --platform linux/arm64,linux/amd64 --tag my-hello-world .
...
#8 [linux/arm64 internal] load metadata for docker.io/library/debian:bullseye-slim
#8 DONE 1.0s

#6 [linux/amd64 internal] load metadata for docker.io/library/debian:bullseye-slim
#6 DONE 0.9s
...

问题是:Docker 实际上是使用本地节点进行 Arm 构建还是可能仍然是本地 QEMU“节点”?输出没有说。

linux docker qemu buildx
1个回答
0
投票

Buildx 驱动程序

docker-container
在每个节点上创建一个
moby/buildkit
容器。容器的名称是
buildx_buildkit_<node-name>
。您可以四处查看该容器以了解它在做什么。

因此,无论是在“本地”主机上还是在远程 Mac Mini 上都可以

  • $ docker ps
    验证容器名称是什么,例如
    buildx_buildkit_mac-mini
    就我而言
  • $ docker exec -ti buildx_buildkit_mac-mini sh
    获取控制台访问正在运行的容器
  • $ top
    在容器内监控进程

在这些容器中,PID 1 始终为

buildkitd
。如果您启动 Buildx 构建并且 Docker 将工作分配给此节点,则将启动其他进程。下面的例子。

空闲

© www.soinside.com 2019 - 2024. All rights reserved.