ank*_*ngh 12 gitlab docker gitlab-ci-runner
我在 gitlab.com 上有一个私人仓库。我已经使用 gitlab 共享运行程序设置了 CI/CD 管道。在代码推送上,构建了一个 docker 镜像,登录到 gitlab 私有 docker 注册表并推送镜像。它适用于共享的跑步者。现在我正在尝试为管道创建自定义运行器。
我在 DigitalOcean 上创建了一个 Droplet(Ubuntu 18.04 上的 Docker 18.09.2~3 - 8 GB / 4 CPU / 160 GB SSD)
ssh 进入液滴
创建一个跑步者(来自https://docs.gitlab.com/runner/install/docker.html#docker-image-installation-and-configuration)
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
Run Code Online (Sandbox Code Playgroud)
并注册它(来自https://docs.gitlab.com/runner/register/index.html#one-line-registration-command)
docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image alpine:3 \
--url "https://gitlab.com/" \
--registration-token "MY_TOKEN" \
--description "docker-runner" \
--tag-list "docker,digitalocean" \
--run-untagged="true" \
--locked="false"
Run Code Online (Sandbox Code Playgroud)
在运行管道时,此命令失败
docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
Run Code Online (Sandbox Code Playgroud)
如果我使用
docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
Run Code Online (Sandbox Code Playgroud)
带有此错误消息
error during connect: Post http://docker:2375/v1.39/auth: dial tcp: lookup docker on 67.207.67.2:53: no such host
Run Code Online (Sandbox Code Playgroud)
如果我使用本地 PC,我也会遇到同样的错误。
我尝试编辑 /etc/hosts 没有成功。
它仍然适用于共享跑步者,但我的自定义跑步者失败了。我错过了什么?
码头工人信息
Containers: 4
Running: 1
Paused: 0
Stopped: 3
Images: 4
Server Version: 18.09.2
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-45-generic
Operating System: Ubuntu 18.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.79GiB
Name: docker-s-4vcpu-8gb-sgp1-01
ID: XF6Y:25TY:YXNO:RDHT:PEGU:KGR7:GPEM:DDBE:MAQ5:5VIJ:4GHB:Q7TF
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
Run Code Online (Sandbox Code Playgroud)
这是成功处理管道的共享运行器上的 /etc/hosts 文件
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 0hshit.hopto.org
127.0.0.1 daymndaymn.myftp.org
127.0.0.1 loba.webhop.me
172.17.0.3 docker 50d9e6c88489 runner-72989761-project-11958054-concurrent-0-docker-0
172.17.0.4 runner-72989761-project-11958054-concurrent-0
Run Code Online (Sandbox Code Playgroud)
pri*_*ngi 15
在GitLab 13.3 中,您可以在运行程序的config.toml文件中执行以下操作:
在[[runners]]部分添加:
pre_build_script = "export DOCKER_HOST=tcp://docker:2375"
environment = ["DOCKER_DRIVER=overlay2", "DOCKER_TLS_CERTDIR="]
Run Code Online (Sandbox Code Playgroud)
并在[runners.docker]节
添加:
tls_cert_path = ""
Run Code Online (Sandbox Code Playgroud)
并更改privileged为true.
最后你会得到这样的东西:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "some_name"
url = "https://my.url.com"
token = "a_token"
executor = "docker"
pre_build_script = "export DOCKER_HOST=tcp://docker:2375"
environment = ["DOCKER_DRIVER=overlay2", "DOCKER_TLS_CERTDIR="]
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_cert_path = ""
tls_verify = false
image = "ruby:2.6"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
Run Code Online (Sandbox Code Playgroud)
在.gitlab-ci.yml 中
您只需对用户 docker 执行此操作:
services:
- docker:dind
Run Code Online (Sandbox Code Playgroud)
小智 3
我有类似的问题。显然,dind 服务不适用于 12.1 版本的 gitlab runner。可以在这里找到临时解决方法: https://forum.gitlab.com/t/docker-dind-stops-working-after-12-1-0-update/28664/4
(临时)解决方案是将以下代码段(来自链接)添加到正确的位置:
services:
- name: docker:dind
entrypoint: ["env", "-u", "DOCKER_HOST"]
command: ["dockerd-entrypoint.sh"]
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
# See https://github.com/docker-library/docker/pull/166
DOCKER_TLS_CERTDIR: ""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13025 次 |
| 最近记录: |