首页 > 解决方案 > Docker 未被识别为内部或外部命令

问题描述

我有以下 .gitlab-ci.yml 文件:

image: docker:latest

variables:
 DOCKER_DRIVER: overlay2

services:
 - docker:dind

before_script:
 - docker info

stages:
 - deploy

step-deploy-dev:
 stage: deploy
 script:
  - echo build and deploy
  - docker build -t myimage myproject/.
  - echo finished build and deploy..
 environment: master

有时(我无法确定原因)我收到以下错误:

Running with gitlab-runner 10.8.0 (079aad9e)
  on My-CI de8391de
Using Shell executor...
Running on DEVServer01...
Fetching changes...
HEAD is now at e5f12f9 Update .gitlab-ci.yml
From http://gitlab.ourinternalserver.nl/my/myproject
   e5f12f9..3b46be8  master     -> origin/master
Checking out 3b46be8a as master...
Skipping Git submodules setup
$ docker info
'docker' is not recognized as an internal or external command,
operable program or batch file.
ERROR: Job failed: exit status 9009

标签: dockergitlabgitlab-cigitlab-ci-runner

解决方案


在您看到此错误的情况下,您的作业在配置了错误执行器的运行器上运行。您的工作需要使用 docker 执行器的运行器。

您可以在输出中看到它说:

Using Shell executor...

应该说

Using Docker executor with image docker:latest ...

您可以标记作业和 docker 运行器,以确保作业仅在所需的运行器上运行。当您注册跑步者时,请指定“docker”之类的标签,然后在作业配置中添加 tags 属性:

step-deploy-dev:
 stage: deploy
 script:
  - echo build and deploy
  - docker build -t myimage myproject/.
  - echo finished build and deploy..
 environment: master
 tags:
  - docker

推荐阅读