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

如何查找自带docker的JDK镜像或向openjdk:8添加docker工具

报错原因说明

你遇到的报错是CI任务使用的基础镜像中未预装Docker CLI,系统无法在PATH路径中找到可执行的docker命令导致的。

方案1:查找预装Docker的OpenJDK系列镜像
  • 直接在公共镜像仓库搜索关键词如 openjdk docker、openjdk 8 docker,优先选择下载量高、维护活跃的镜像
  • 找到后替换你的.gitlab-ci.yml中image字段的配置即可直接使用,使用前注意核对镜像内的JDK版本、Docker版本是否符合你的业务需求
方案2:自行给openjdk:8镜像添加Docker支持

如果找不到合适的预装镜像,有两种实现方式:

方式1:在CI任务运行时临时安装(无需自行构建镜像)

直接在.gitlab-ci.yml的before_script阶段添加Docker安装逻辑,示例配置如下:

your_job:
  image: openjdk:8
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  before_script:
    # 安装Docker CLI依赖
    - apt-get update && apt-get install -y ca-certificates curl gnupg lsb-release
    - mkdir -p /etc/apt/keyrings
    - curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
    - apt-get update && apt-get install -y docker-ce-cli
  script:
    # 你的原有任务执行逻辑
    - mvn clean package

这种方式的优势是不需要额外维护自定义镜像,缺点是每次运行任务都要执行安装步骤,会增加CI运行耗时。

方式2:构建自定义的OpenJDK+Docker镜像(适合长期使用)

编写Dockerfile构建专属镜像,一次构建后续所有CI任务都可以直接复用:

  1. 新建Dockerfile,内容如下:
FROM openjdk:8
# 预装Docker CLI
RUN apt-get update && apt-get install -y ca-certificates curl gnupg lsb-release \
    && mkdir -p /etc/apt/keyrings \
    && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
    && apt-get update && apt-get install -y docker-ce-cli \
    # 清理apt缓存减小镜像体积
    && rm -rf /var/lib/apt/lists/*
  1. 执行构建命令推到你的私有镜像仓库:
    docker build -t your-registry/openjdk-8-docker:latest . && docker push your-registry/openjdk-8-docker:latest
  2. 替换.gitlab-ci.yml中的镜像配置即可:
your_job:
  image: your-registry/openjdk-8-docker:latest
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  script:
    # 你的原有任务执行逻辑
    - mvn clean package

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:03