我正在尝试在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"
这里的问题是节点docker映像不嵌入docker二进制文件。
两种可能性:
>
将阶段拆分为两个作业。一个使用节点映像进行质量和测试,一个使用docker映像进行构建和部署。请参阅作业留档。
构建一个自定义docker映像,该映像同时嵌入节点和docker,并使用此映像构建您的回购协议。
请注意,在这两种情况下,都必须在代理中启用docker。参见文档。
你有两个选择来解决这个问题。你需要编辑你的配置。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
您需要选择一个包含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