Jenkins执行流水线构建时提示docker: not found错误如何解决?
问题根因
你使用的官方jenkins/jenkins:alpine镜像默认未预装Docker CLI工具,即便你已经挂载了宿主机的/var/run/docker.sock套接字,容器内部也没有可执行的docker命令可以和套接字通信,因此执行docker相关命令时会抛出docker: not found报错。
解决方案
提供两种常用修复方式,按需选择即可:
方式1:构建带Docker CLI的自定义Jenkins镜像
- 新建Dockerfile文件,内容如下:
FROM jenkins/jenkins:alpine # 切换到root权限安装依赖 USER root RUN apk add --update --no-cache docker-cli # 切回默认jenkins用户 USER jenkins
- 在Dockerfile所在目录执行构建命令:
docker build -t jenkins-with-docker:alpine . - 修改docker-compose配置中jenkins服务的image字段为
jenkins-with-docker:alpine
方式2:直接挂载宿主机Docker二进制文件(无需重构镜像)
直接修改docker-compose中jenkins服务的配置,新增权限配置和挂载项:
services: jenkins: image: jenkins/jenkins:alpine # 新增下面两行配置,999替换为你宿主机docker组的gid,可执行getent group docker | cut -d: -f3查询 group_add: - 999 volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock # 新增挂载宿主机docker二进制 - /usr/bin/docker:/usr/bin/docker
注意:如果宿主机是CentOS/Ubuntu等glibc发行版,挂载的docker二进制可能和alpine的musl库不兼容,推荐优先使用方式1。
验证
配置修改完成后执行docker-compose up -d重启服务,进入Jenkins容器执行docker version,能正常输出Client和Server版本信息即修复完成。
内容的提问来源于stack exchange,提问作者user3389425
相关产品推荐
相关产品推荐

