Buildkit 无法正常运行

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

使用下面的 Dockerfile 创建了 Jenkins 代理构建套件的映像。

FROM jenkins/inbound-agent:alpine as jnlp

FROM moby/buildkit as buildkit

USER root

RUN apk update \
  && apk upgrade \
  && apk add --update openjdk11 tzdata curl unzip bash \
  && rm -rf /var/cache/apk/*

COPY --from=jnlp /usr/local/bin/jenkins-agent /usr/local/bin/jenkins-agent
COPY --from=jnlp /usr/share/jenkins/agent.jar /usr/share/jenkins/agent.jar

ENTRYPOINT ["/usr/local/bin/jenkins-agent"]

该镜像作为 Kubernetes Pod 正常运行。 但是,当我尝试在 pod 中使用 buildkit 构建映像时,会发生错误。 我不知道问题是什么。

+ buildctl build --frontend dockerfile.v0 --local 'context=.' --local 'dockerfile=.' --output 'type=image,name=docker.io/username/image'
error: listing workers for Build: failed to list workers: Unavailable: connection error: desc = "transport: error while dialing: dial unix /run/buildkit/buildkitd.sock: connect: no such file or directory"

执行上述命令时,出现以下错误。

buildkit 已在 Jenkins helm 图表中注册,如下所示。

  builkit:
    podName: buildkit
    customJenkinsLabels: buildkit
    image: "agent-buildkit"
    tag: "1.0"
    alwaysPullImage: true
kubernetes jenkins agent docker-buildkit
1个回答
0
投票

ENTRYPOINT
在你的 dockerfile 中运行
jenkins-agent
但对 buildkit 不执行任何操作。您需要检查原始
ENTRYPOINT
图像中的
moby/buildkit
是什么,并创建一个可以执行这两项操作的自定义脚本:

  1. 启动
    buildkit
    守护进程
  2. 开始
    jenkins-agent

当你的 docker 镜像中有多个进程时,这并不理想,因此最好在脚本中添加子管理(使用 trap 捕获信号并正常关闭 jenkins 和 buildkit)。

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