GitLab Runner无法解析gitlab.com域名及端口配置疑问求助
解决方案
一、先验证宿主机DNS可用性
在Debian OVH机器上执行以下命令,确认基础网络解析是否正常:
ping gitlab.com nslookup gitlab.com dig gitlab.com
如果这些命令无法解析域名,直接修改宿主机DNS配置:
- 临时修改
/etc/resolv.conf:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf echo "nameserver 1.1.1.1" >> /etc/resolv.conf
- 永久修改(Debian系统):编辑
/etc/systemd/resolved.conf,设置DNS=8.8.8.8 1.1.1.1,然后重启服务:
systemctl restart systemd-resolved
二、为GitLab Runner容器指定DNS服务器
你的Runner通过Docker Swarm部署,直接更新服务配置添加DNS:
docker service update --dns 8.8.8.8 --dns 1.1.1.1 gitlab_runner
验证配置是否生效:
docker service inspect gitlab_runner | grep -A5 "DNS"
如果是单容器Runner(非Swarm),重启容器时添加DNS参数:
docker run -d --name gitlab-runner --dns 8.8.8.8 --dns 1.1.1.1 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest
三、配置Docker Daemon全局DNS
让所有容器默认使用可靠DNS,修改/etc/docker/daemon.json:
{ "dns": ["8.8.8.8", "1.1.1.1"] }
重启Docker服务:
systemctl restart docker
四、关于端口疑问的说明
8093端口映射和当前DNS解析问题无关:
- GitLab Runner默认不需要对外暴露8093端口,你看到的服务端口映射是无效的,可移除:
docker service update --publish-rm 8093:8093 gitlab_runner
- DNS解析依赖UDP 53端口,只要宿主机能访问外部DNS服务器,无需在iptables中额外添加规则。
问题回顾
GitLab Runner无法连接Git仓库,报错:
fatal: unable to access 'https://gitlab.com/project.git/': Could not resolve host: gitlab.com
已尝试的方案:
- 重启Docker(注:原命令
sudo systemctl daemon不完整,正确命令为sudo systemctl restart docker) - 重新创建并加载新的Runner
- 更换Docker镜像
相关配置:
CI/CD配置
stages: - docker back:docker: stage: docker tags: - wellcov-runner image: docker:latest services: - docker:dind before_script: - echo -n $MAIN_REGISTRY_PASSWORD | docker login -u $MAIN_REGISTRY_USER --password-stdin $CI_REGISTRY variables: # Pushing into the shared Wellcov container registry (main repository) IMAGE: $MAIN_REGISTRY/wellcov-back-end:$CI_COMMIT_REF_NAME cache: paths: - target/ script: - echo "Gitlab CI - Building back-end ${CI_COMMIT_REF_NAME} docker" - docker build -t $IMAGE . --build-arg MAVEN_IMAGE=$MAVEN_IMAGE --build-arg UBI_IMAGE=$UBI_IMAGE - docker push $IMAGE
Runner参数配置
concurrent = 1 check_interval = 0 shutdown_timeout = 0 [session_server] session_timeout = 1800 [[runners]] name = "wellcov-runner" url = "https://gitlab.com/" id = 22344137 token = "...." token_obtained_at = 2023-04-01T17:10:09Z token_expires_at = 0001-01-01T00:00:00Z executor = "docker" [runners.cache] MaxUploadedArchiveSize = 0 [runners.docker] tls_verify = false image = "ruby:2.7" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] shm_size = 0
Docker服务/容器信息
docker service ls输出:
ID NAME MODE REPLICAS IMAGE x4lq3jnshtii gitlab_runner replicated 1/1 gitlab/gitlab-runner:latest ***:8093->8093/tcp**
docker container ls输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 652d53ee4780 gitlab/gitlab-runner:latest "/usr/bin/dumb-init …" 14 hours ago Up 14 hours gitlab_runner.1.m3wt71h3f5eldppib83j3uvzj
内容的提问来源于stack exchange,提问作者djecko06
相关产品推荐
相关产品推荐

