当前位置: 首页 > 知识库问答 >
问题:

Gitlab CI-docker:未找到命令

江华容
2023-03-14

我正在尝试在gitlab ci管道中构建我的docker映像。

但是它找不到docker命令。

/bin/bash:第69行:docker:未找到命令错误:作业失败:执行远程命令时出错:命令终止,退出代码为非零:在docker容器中执行时出错:1

.gitlab-ci.yml

stages:
  - quality
  - test
  - build
  - deploy

image: node:8.11.3

services:
  - mongo
  - docker:dind

before_script:
- npm install

quality:
  stage: quality
  script:
  - npm run-script lint

test:
  stage: test
  script:
  - npm run-script test

build:
  stage: build
  script:
  - docker build -t server .

deploy:
  stage: deploy
  script:
  - echo "TODO deploy push docker image"

共有3个答案

房子昂
2023-03-14

这里的问题是节点docker映像不嵌入docker二进制文件。

两种可能性:

>

  • 将阶段拆分为两个作业。一个使用节点映像进行质量和测试,一个使用docker映像进行构建和部署。请参阅作业留档。

    构建一个自定义docker映像,该映像同时嵌入节点和docker,并使用此映像构建您的回购协议。

    请注意,在这两种情况下,都必须在代理中启用docker。参见文档。

  • 司马耘豪
    2023-03-14

    你有两个选择来解决这个问题。你需要编辑你的配置。toml文件(位于安装gitlab runner的任何位置)。

    选项1

    在配置中。汤姆:

    privileged = true
    

    在里面gitlab ci。yml:

    myjob:
      stage: myjob
      image: docker:latest
      services:
        - docker:18.09.7-dind # older version that does not need demand TLS (see below)
    

    选择2

    配置中。汤姆:

    privileged = true
    volumes = ["/certs/client", "/cache"]
    

    在里面gitlab ci。yml:

    myjob:
      stage: myjob
      image: docker:latest
      services:
        - docker:dind
      variables:
        DOCKER_DRIVER: overlay2 # not sure if this is needed
        DOCKER_TLS_CERTDIR: "/certs"
    

    重要提示:一旦对配置进行了更改。toml您可能需要重新启动GITLAB RUNNER(这可能因操作系统而异)——我确实重新启动了我的,不确定如果您不重新启动它会发生什么!

    重新启动gitlab runner的说明如下:。。。https://docs.gitlab.com/runner/commands/ ... 基本上,gitlab runner restart,但在Windows上,我必须使用Windows“服务”来重新启动它

    为什么这个问题?

    特权=true摆脱docker:命令未找到问题

    但是,docker: dind现在需要TLS证书(无论它们是什么)。如果您对旧的docker版本感到满意,那么您可以使用选项1。如果您想要最新的,您需要设置Gitlab CLI才能使用它们,这是选项2。J. E. S. U. S爱你:)

    欲了解更多信息。。。https://about.gitlab.com/blog/2019/07/31/docker-in-docker-with-docker-19-dot-03

    杜辰龙
    2023-03-14

    您需要选择一个包含docker二进制文件的映像

    image: gitlab/dind
    
    services:
      - docker:dind
    
     类似资料:
    • 我刚开始使用Docker,刚得到一个基本的ubuntu图像。我在Windows7的盒子上运行Docker通过Docker-Machine。 不知道为什么,我找不到那个人命令上了巴什。我试着把人的路径导出到$path,但仍然没有喜悦。

    • 我是新的Python开发和尝试使用pipenv。我运行命令,它成功运行: 然而,当我在一个新的根项目目录中运行命令时,我收到以下消息:。我怀疑我可能需要修改我的. bashrc,但是我不清楚要向文件中添加什么,或者是否需要修改。

    • 这个问题似乎不是关于特定的编程问题、软件算法或主要由程序员使用的软件工具。如果您认为这个问题在另一个Stack Exchange网站上是主题,您可以留下评论来解释这个问题在哪里可以得到回答。 未解决原始关闭原因 我有一个运行 Ubuntu 的 Docker 容器,我做了如下: 但是它似乎没有。例如。 那个我需要安装吗 似乎缺少一个非常基本的命令。我尝试了<code>where is ping</c

    • 我在Heroku上使用Postgresql数据库托管了一个RoR应用程序,并且一直在使用PG备份工具将数据库从我的应用程序备份到本地机器上。由于该应用程序仍在开发中,它从编程的角度帮助我降低了我的同事对数据库所做的更改。几个月来,我一直在成功地使用PG备份进行捕获和恢复,但最近,当我运行此处所示的典型命令时: 在curl命令执行后,我遇到此错误: 你知道为什么会这样吗?显然,问题是我无法恢复下载的

    • 我使用的是节点0.10。35和grunt指挥部运作良好。现在升级到0.12之后。3 grunt命令已停止工作。 OS:Mac OSX 10.10.1节点:0.12.3 npm:2.9.1 grunt:0.4.5 我认为可能有问题的节点安装所以我清理安装了3-4次 我试着用- node-v0.12.3.pkg 节点版本管理器(nvm) 许多此类问题的解决方案建议使用 然后使用安装本地节点模块。 我遵

    • 我试着做一个文件: 但是得到了错误: Android:命令未找到 我试图设置Android SDK的路径,但没有帮助: 有没有可能解决这个问题? UPD:我正在使用这个软件中的Git Shell:http://git-scm.com/download/win