GitLab CI执行docker build报错docker: not found退出码127求助
问题根因
你当前的GitLab CI Job运行环境中未预装Docker客户端,因此执行docker build命令时抛出command not found错误,退出码127。另外你的配置还存在另外两处语法错误,会导致后续构建失败,可同步修复。
修复方案
- 调整
.gitlab-ci.yml配置,启用Docker-in-Docker(DinD)服务支撑镜像构建
stages: - java7 # - java11 # - deploy variables: # 配置Docker daemon访问地址,适配DinD服务 DOCKER_HOST: tcp://docker:2375/ # 关闭TLS校验降低配置复杂度 DOCKER_TLS_CERTDIR: "" java7: stage: java7 # 指定Job运行镜像为官方Docker镜像,预装Docker客户端 image: docker:latest # 启用DinD服务提供Docker daemon services: - docker:dind script: # 末尾补充构建上下文.,否则Docker会找不到Dockerfile - docker build --build-arg JAVA_VERSION=openjdk7 . # 打开tags配置,指定使用支持Docker的Runner执行任务 tags: - docker #java11: # stage: java11 # image: docker:latest # services: # - docker:dind # script: # - docker build --build-arg JAVA_VERSION=openjdk11 . # tags: # - docker
- 修复Dockerfile语法错误
你当前Dockerfile中安装Java的命令未正确引用变量,将对应行修改为:
RUN apk --update --no-cache add $JAVA_VERSION curl
可选替代方案(仅适用于私有Runner场景)
如果你使用的是自行维护的Docker Runner,可以直接在Runner的config.toml配置中添加宿主机Docker套接字挂载:
[[runners]] [runners.docker] volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
配置完成后无需启用DinD服务,Job内即可直接调用宿主机的Docker daemon执行构建操作。
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

