以下是我设置自定义Gitlab runner的步骤:
1.按照以下说明安装Gitlab runner:https://docs.gitlab.com/runner/install/linux-repository.html
1.使用docker
exectuor和docker:19
image注册跑步者
1.将gitlab-ci.yml
写为:
image: docker:19.03.1
services:
- name: docker:19.03.1-dind
alias: docker
stages:
- build
build:
stage: build
variables:
IMAGE_TAG: repo.azurecr.io/some-repo
DOCKER_HOST: tcp://172.17.0.1:2375
DOCKER_TLS_CERTDIR: ''
script:
- docker login someacr.azurecr.io -u "$SERVICE_PRINCIPAL_USER" -p "$SERVICE_PRINCIPAL_PASSWORD"
- if [[ "$CI_COMMIT_REF_NAME" == "develop" ]]; then docker build -t $IMAGE_TAG .; fi
字符串
1.运行管道会抛出此错误:
Login succeeded
if [[ "$CI_COMMIT_REF_NAME" == "develop" ]]; then docker build -t $IMAGE_TAG .; fi
Cannot connect to the Docker daemon at tcp://172.17.0.1:2375. Is the docker daemon running?
Cleaning up project directory and file based variables
00:02
ERROR: Job failed: exit code 1
型
这就是我到目前为止所尝试的:
/etc/gitlab-runner/config.toml
中的privileged: true
gitlab-ci.yml
中的dind:19
Docker镜像
1.在/etc/gitlab-runner/config.toml
中添加volumes = ["/var/run/docker.sock /var/run/docker.sock" "/cache"]
1.在gitlab-ci.yml
中使用DOCKER_TLS_CERTDIR: ''
作为变量
1.使用DOCKER_HOST: tcp://172.17.0.1:2375
填充DOCKER_HOST
变量
1.更多...
所有这些更改都会导致Gitlab Runner故障排除中描述的两个问题之一:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#troubleshooting- docker:无法在tcp://docker:2375连接到Docker守护进程。docker守护进程正在运行吗?
- Docker no such host error.
2条答案
按热度按时间eimct9ow1#
DOCKER_HOST
变量值不正确。使用
DOCKER_HOST: "tcp://docker:2375"
在/etc/gitlab-runner/config.toml中添加卷= ["/var/run/docker.sock /var/run/docker.sock”“/cache”]
我建议在这里从runner配置中删除
/var/run/docker.sock
的卷挂载。在利用docker:dind
服务容器方法时,这不是必需的。尽管如此,从技术上讲,它不会引起问题。在/etc/gitlab-runner/config.toml中为true
[...]
在gitlab-ci.yml中使用了DOCKER_TLS_CERTBlock:''作为变量
这些变化是好的,保持这些变化。
nwlls2ji2#
为了在gitlab ci中使用docker:dind的问题最少,必须正确设置四个参数:
示例部分.gitlab-ci.yml文件如下:
字符串