You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无Docker的GitLab Kubernetes非特权Runner使用Paketo/CNB方案咨询

无Docker环境下GitLab CI使用Paketo Buildpacks方案

报错原因说明

你当前的执行报错是因为pack CLI默认使用Docker daemon作为构建后端,而你的CI环境既没有暴露宿主机的/var/run/docker.sock,也没有启用docker:dind服务,因此无法连接到Docker daemon导致构建失败。

最简可行方案

无需引入kpack这类复杂组件,只需要将pack的构建后端替换为rootless podman即可,rootless podman支持非特权环境运行,不需要Docker相关依赖,完全符合你的环境要求。

调整后的.gitlab-ci.yml配置

# 选用内置pack CLI和rootless podman的官方镜像,无需单独安装pack组件
image: quay.io/buildpacks/builder:latest

stages:
  - build

variables:
  # 配置pack使用podman套接字,不依赖Docker服务
  DOCKER_HOST: unix:///run/user/1000/podman/podman.sock
  # 按实际需求替换为你的镜像仓库组地址
  REGISTRY_GROUP_PROJECT: "你的镜像仓库地址/你的项目组路径"

build-image:
  stage: build
  script:
    - pack --version
    # 登录镜像仓库,使用GitLab内置的镜像仓库凭证变量,私有仓库可自行替换参数
    - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    # 执行构建并直接推送镜像到仓库
    - >
      pack build $REGISTRY_GROUP_PROJECT/$CI_PROJECT_NAME:latest
      --builder paketobuildpacks/builder:base
      --path .
      --container-builder podman
      --publish

必要配置说明

  • 你的Kubernetes GitLab Runner需要配置任务的securityContext.runAsUser为1000,rootless podman默认使用该UID运行,无需开启任务特权权限
  • 如果需要加快构建速度,可以为Runner配置持久化卷,挂载/home/build/.cache目录,pack会自动缓存构建层和基础镜像
  • 如果构建需要拉取私有源的依赖或基础镜像,提前在podman登录配置中添加对应仓库的凭证即可

内容的提问来源于stack exchange,提问作者jonashackt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:54:03