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

GitLab CI结合Kubernetes Runner用docker:dind执行Maven任务遇Docker环境错误

解决GitLab CI Kubernetes Runner + docker:dind 无法找到Docker环境的问题

1. 开启Kubernetes Runner特权模式

GitLab Runner的Kubernetes executor必须启用特权模式,docker:dind需要特权权限才能启动Docker守护进程。修改Runner的config.toml配置文件:

[[runners]]
  name = "Kubernetes Runner"
  executor = "kubernetes"
  [runners.kubernetes]
    privileged = true
    [runners.kubernetes.pod_security_context]
      privileged = true

更新配置后重启Runner生效。

2. 修正CI流水线配置

在.gitlab-ci.yml中正确配置dind服务与Docker连接变量:

stages:
  - build

build_job:
  stage: build
  image: docker:dind
  services:
    - name: docker:dind
      alias: docker
  variables:
    DOCKER_HOST: tcp://docker:2376
    DOCKER_TLS_CERTDIR: "/certs"
    DOCKER_TLS_VERIFY: 1
    DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
  before_script:
    - apk update && apk add --no-cache openjdk21 maven git
    - export MAVEN_HOME=/usr/share/java/maven-3.9.8
    - export PATH=$MAVEN_HOME/bin:$PATH
  script:
    - mvn clean package
    - docker build -t your-app-image .
    - docker push your-app-image

如果坚持使用自定义dind镜像,需确保CI中DOCKER_HOST变量指向正常运行的Docker daemon地址。

3. 优化自定义dind镜像

你的自定义Dockerfile可简化调整:

FROM docker:dind

RUN apk update && apk add --no-cache openjdk21 maven git
# 无需手动设置MAVEN_HOME,apk安装的maven会自动配置环境变量

CMD ["dockerd-entrypoint.sh"]

避免手动指定可能不存在的Maven路径,依赖包管理器自动配置的环境变量更可靠。


内容的提问来源于stack exchange,提问作者Eduardo Figueredo Pacheco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:04:58