Kay*_*Kay 9 gitlab docker gitlab-ci
我正在尝试在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"
Run Code Online (Sandbox Code Playgroud)
您有 2 个选项可以解决此问题。您需要编辑 config.toml 文件(位于安装 gitlab 运行程序的位置)。
选项1
在 config.toml 中:
privileged = true
Run Code Online (Sandbox Code Playgroud)
在 .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)
Run Code Online (Sandbox Code Playgroud)
选项2
在 config.toml 中:
privileged = true
volumes = ["/certs/client", "/cache"]
Run Code Online (Sandbox Code Playgroud)
在 .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"
Run Code Online (Sandbox Code Playgroud)
重要提示:一旦您对 config.toml 进行了更改,您可能需要重新启动 GITLAB RUNNER(这可能会因操作系统而异) - 我确实重新启动了我的,不确定如果您不重新启动它会发生什么!
重新启动 gitlab runner 的说明在这里... https://docs.gitlab.com/runner/commands/ ... 基本上gitlab-runner restart但在 Windows 上我必须使用 Windows“服务”来重新启动它
为什么会出现这个问题?
priviledged=true摆脱 docker: 命令未找到问题
但是,docker:dind现在需要 TLS 证书(无论它们是什么)。如果您对较旧的 docker 版本感到满意,那么您可以使用选项 1。如果您想要最新版本,则需要设置 Gitlab CLI 来使用它们,这是选项 2。耶稣爱你:)
欲了解更多信息... https://about.gitlab.com/blog/2019/07/31/docker-in-docker-with-docker-19-dot-03
您需要选择一个包含 docker 二进制文件的图像
image: gitlab/dind
services:
- docker:dind
Run Code Online (Sandbox Code Playgroud)
这是一个非常适合我的完整示例:
Image-upload:
image: docker:dind
stage: Upload Docker Image
variables:
IMAGE_NAME: my.registry.site.com/${CI_PROJECT_PATH_SLUG}:$CI_COMMIT_SHA
environment: dev
only:
- dev
script:
- echo Image name ${IMAGE_NAME}
- docker build -t $IMAGE_NAME -f ./prod.dockerfile .
- docker login my.registry.site.com --username $DOCKER_USER --password $DOCKER_PASS
- docker push $IMAGE_NAME
services:
- docker:dind
Run Code Online (Sandbox Code Playgroud)
附言。您应该使用docker:dind而不是gitlab/dind获取最新的图像。
| 归档时间: |
|
| 查看次数: |
8432 次 |
| 最近记录: |