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

GitLab Runner Shell执行器报docker: command not found问题求助

GitLab Runner Shell执行器遭遇docker: command not found错误求助

使用GitLab Runner(Shell执行器)构建Docker容器时,出现docker: command not found错误。Runner已正确分配,问题集中在Docker相关配置上,主力开发已离职,请求解决建议。

构建输出

output error

相关文件内容

.gitlab-ci.yml

stages:
  - build
  - deploy

variables:
  STACK_NAME: isnta_api
  VERSION: ${CI_COMMIT_TAG}
  IMAGE_NAME: ${DOCKER_REGISTRY}/${CI_PROJECT_PATH}:${CI_COMMIT_TAG}

before_script:
  - echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
  - echo $STACK_NAME
  - echo $CI_REGISTRY
  - echo $IMAGE_NAME

build:
  stage: build
  only:
    - tags
  script:
    - docker build -f Dockerfile -t ${IMAGE_NAME}  .
    - docker push ${IMAGE_NAME}

deploy:
  stage: deploy
  only:
    - tags
  script:
    - docker stack deploy --with-registry-auth --compose-file docker-compose.yml ${STACK_NAME}

docker-compose.yml

version: '3.7'

services:
  app:
    container_name: ${STACK_NAME}
    image: ${IMAGE_NAME}
    environment:
      PORT: 4042
      APP_ENV: production
      INSTAGRAM_API_KEY: my-api-key
      INSTAGRAM_API_HOST_NAME: instagram-bulk-profile-scrapper.p.rapidapi.com
      INSTAGRAM_API_BASE_URL: https://instagram-bulk-profile-scrapper.p.rapidapi.com/clients/api/ig/
    networks:
      - nxnet
    ports:
      - 4042:4042
    deploy:
      replicas: 1
      update_config:
        order: start-first

networks:
  nxnet:
    external: true

Dockerfile

FROM node:14-alpine

COPY . /app

WORKDIR /app
RUN apk add --no-cache bash
RUN npm install

RUN npm run build

CMD npm run start:prod

解决建议

  • 检查Runner宿主机是否安装Docker
    登录GitLab Runner所在服务器,执行docker --version,如果无输出则说明未安装Docker。根据服务器系统安装Docker:

    • Ubuntu:sudo apt update && sudo apt install docker.io
    • CentOS:sudo yum install docker
  • 赋予GitLab Runner用户Docker权限
    默认GitLab Runner运行用户为gitlab-runner,需将其加入docker组:

    sudo usermod -aG docker gitlab-runner
    sudo gitlab-runner restart
    
  • 验证Docker服务状态
    检查Docker服务是否运行:

    sudo systemctl status docker
    

    若未运行,启动服务并设置开机自启:

    sudo systemctl start docker
    sudo systemctl enable docker
    
  • 推荐切换为Docker执行器
    Shell执行器依赖宿主机环境,Docker执行器更隔离、稳定。重新注册Runner时选择Docker执行器,并指定基础镜像(如docker:latest),避免宿主机环境依赖问题。

内容的提问来源于stack exchange,提问作者Andronik Nazaryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 03:54:15