docker buildx 禁用多平台并行构建

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

我有一个 docker 构建,在构建过程中需要运行服务器进行一些管理配置。通过运行服务器,它声明一个端口,并且在多平台构建期间,这与

docker buildx
命令冲突,因为它声明该端口已在使用中。

现在我想按顺序运行构建而不是并行运行,但这似乎不是一个选项?

我尝试通过将 cpu 设置为 1 (

--cpuset-cpus 1
) 来实现此功能,但这似乎没有什么区别。

docker buildx build --platform=linux/amd64,linux/arm64/v8 --cpuset-cpus 1 --push -t ivonet/payara .

那么是否可以在禁用并行的情况下运行此构建?

docker x86-64 arm64 buildx
3个回答
0
投票

我现在对此做了一些研究,除了目前似乎无法禁用并行性之外,我还没有找到令人满意的答案。

我确实找到了一种适合我的解决方法,并且很好地解决了这个问题。 我现在使用实际的远程服务器来构建我需要的目标平台。

本质上,定义一个远程(通过 ssh)服务器,并在其上安装 docker,然后将其配置为构建特定目标。 这样,它实际上可以并行运行,因为物理上不同的机器可以处理形式上重叠的端口号(正如我的用例中的问题)。

阅读完整的博客文章这里



0
投票

当您创建构建器时,您可以传递以下信息:

buildkitd.toml

[worker.oci]
  max-parallelism = 1

当您在本地计算机上时:

docker buildx create --use \
  --name mybuilder \
  --driver docker-container \
  --config <<dir>>/buildkitd.toml

当你在 github 上操作时:

    - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          platforms: linux/amd64,linux/arm64
          config: <<dir>>/buildkitd.toml
© www.soinside.com 2019 - 2024. All rights reserved.