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

如何编写适用于Jenkins流水线的含Maven、JDK、Docker的Dockerfile

错误原因说明

  • 你在构建阶段执行RUN docker ps报错,是因为Docker镜像构建过程中默认不会启动Docker daemon,你仅安装了Docker客户端,没有可连接的守护进程自然会触发该报错,这条测试命令可以直接从Dockerfile中移除。
  • 你的使用场景是Jenkins流水线agent,不需要在容器内部运行Docker daemon,只要预装Docker客户端,运行容器时挂载宿主机的/var/run/docker.sock文件,就能复用宿主机的Docker daemon完成镜像构建操作,比DinD(Docker in Docker)方案更简单稳定。

正确的Dockerfile编写

# 基础镜像已预装Maven 3.8.1和OpenJDK 11,匹配你的需求
FROM maven:3.8.1-adoptopenjdk-11

# 合并命令减少镜像层数,更新源、安装依赖、安装Docker客户端并清理缓存减小镜像体积
RUN apt update -y && \
    apt install -y curl && \
    curl -fsSL https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz | tar xvz -C /tmp/ && \
    mv /tmp/docker/docker /usr/bin/docker && \
    apt clean && \
    rm -rf /var/lib/apt/lists/* /tmp/docker

构建与使用验证

  1. 构建镜像命令:docker build -t maven-jdk11-docker .
  2. 本地可用性验证:
    执行docker run --rm -v /var/run/docker.sock:/var/run/docker.sock maven-jdk11-docker docker ps,如果能正常输出宿主机正在运行的容器列表,说明镜像功能正常。如果遇到权限报错,可以指定以root用户运行容器,或者给宿主机的/var/run/docker.sock文件添加其他用户读写权限。
  3. Jenkins流水线使用配置:
    定义agent时添加卷挂载配置,将宿主机的/var/run/docker.sock挂载到容器的同路径,即可正常执行mvn spring-boot:build-image命令完成Spring Boot镜像构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:05