linux docker buildx在提取该高速缓存后挂起

q8l4jmvw  于 2023-03-17  发布在  Linux
关注(0)|答案(1)|浏览(150)

我有一个用于amd的docker文件和另一个用于arm的docker文件。我们将它们命名为my-priv-registry/amdmy-priv-registry/arm。我运行了一个CI,它在修改完成时编译映像。amd.dockerfilearm.dockerfile是相同的

FROM ubuntu:20.04

WORKDIR /install

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y --no-install-recommends \
    python3 python3-pip python3-dev \
    git wget build-essential \
    curl zip unzip tar \
    vim automake libssl-dev \
    && rm -rf /var/lib/apt/lists/*

RUN python3 -m pip install -U pip

RUN apt-get update && apt-get install -y --no-install-recommends cmake \
    && rm -rf /var/lib/apt/lists/*

COPY --chown=1000:1000 boost.sh .
RUN ./boost.sh

... I stop here as the CI stops here too

我已经在我的docker注册表中有了我的图像,我可以连接到gitlab-runner的主机并实际拉取,我还可以列出我在主机中本地拥有的标记。
我的跑步者的外形是

concurrent = 8
check_interval = 0

[session_server]
  session_timeout = 1800
[[runners]]
  name = "my_executor"
  url = "https://my.server.io"
  token = "WontShowIt"
  executor = "shell"
  environment = [
    "GIT_STRATEGY=clone",
  ]
  shell = "bash"
  cache_dir = "/cache"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

在我的CI中,我像这样编辑图像

DOCKER_BUILDKIT=1 docker buildx build \
  --platform linux/arm64 \
  -t my-priv-registry/arm:test \
  -f arm.dockerfile \
  --cache-to=type=inline \
  --cache-from=type=registry,ref=my-priv-registry/arm:latest \
  install_scripts

但是,在以下消息之后

#28 importing cache manifest from my-priv-registry/arm:latest
#28 DONE 0.0s

#8 [internal] load build context
#8 transferring context: 568B done
#8 DONE 0.0

它就卡住了。
知道为什么会失败吗?更多信息:

  • AMD图像实际上起作用。
  • 我想这意味着这不是登录问题
  • 我可以连接到gitlab-runner的主机并拉取映像,它工作正常
  • 如果我连接到主机并自己运行构建,它也会挂起,所以这似乎不是gitlab-runner的问题。
  • 我正在并行运行所有的构建作业(三个构建作业使用buildx),这会是一个问题吗?
    编辑1:

我还尝试该高速缓存导入为:

--cache-from=type=local,src=/var/lib/docker/buildkit

但还是卡住了。

**编辑2:**还尝试使用其他生成器

docker buildx create --name DockerImageBuilder --use

并在本地使用缓存

--cache-from type=local,src=/tmp/docker-cache \
    --cache-to   type=local,dest=/tmp/docker-cache,mode=max \

还挂着...

**编辑3:**我重新启动了主机PC,并且...它工作了几个管道,但是现在它又挂起了。

brtdzjyr

brtdzjyr1#

尝试在docker构建中添加--network host选项,强制docker直接使用主机的网络堆栈,这里是你的gitlab runner主机,正如你所说,它没有网络问题。

相关问题