You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在VirtualBox(Ubuntu16.04)配置GitLab CI/CD时遇gitlab-ci-token连接失败

解决GitLab CI/CD无法访问gitlab-ci-token的连接失败问题

看起来你在VirtualBox里的Ubuntu 16.04环境部署GitLab CI/CD时踩了个坑——用GitLab Runner 10.5.0搭配Docker executor(node:carbon-alpine镜像)跑任务时,碰到了无法访问gitlab-ci-token、连接失败的问题。我之前也遇到过类似情况,给你分享几个实用的排查和解决思路:

1. 先搞定虚拟机的网络连通性

因为你的Runner是在VirtualBox虚拟机里,首先得确保它能正常连到GitLab服务器:

  • 如果GitLab也是部署在本地虚拟机里,把两台虚拟机的网络模式都改成桥接模式(Bridge Adapter),或者用Host-Only网络并配置好静态IP,保证它们在同一网段。
  • 在Runner所在的Ubuntu机器上手动ping GitLab的域名或IP,要是ping不通,先把网络连通性这个基础问题解决掉。

2. 核对Runner的注册配置是否正确

Runner注册时的URL和token错了也会导致认证失败,这是个很容易犯的小错误:

  • 登录你的GitLab项目,进入「Settings > CI/CD > Runners」,找到项目专属Runner的注册URL和token。
  • 打开Runner机器上的配置文件/etc/gitlab-runner/config.toml,对比里面的url和token字段,确保和GitLab上的完全一致。要是不对,就重新注册Runner:
    # 先注销旧的Runner
    gitlab-runner unregister --name sr-runner
    # 重新注册,替换成你自己的URL和token
    gitlab-runner register \
      --url "你的GitLab服务器URL" \
      --registration-token "你的项目注册token" \
      --executor docker \
      --docker-image node:carbon-alpine \
      --name sr-runner
    

3. 给Docker executor配置宿主机网络模式

默认情况下,Docker容器用的是自己的桥接网络,可能没法访问宿主机或者GitLab服务器。试试让容器直接用宿主机的网络:

  • 编辑/etc/gitlab-runner/config.toml,在[runners.docker]区块里添加network_mode = "host":
    [[runners]]
      name = "sr-runner"
      url = "你的GitLab服务器URL"
      token = "1d32ebc7..."
      executor = "docker"
      [runners.docker]
        tls_verify = false
        image = "node:carbon-alpine"
        privileged = false
        disable_entrypoint_overwrite = false
        oom_kill_disable = false
        disable_cache = false
        volumes = ["/cache"]
        shm_size = 0
        network_mode = "host"  # 新增这一行
    
  • 修改完记得重启GitLab Runner服务:
    sudo gitlab-runner restart
    

4. 检查GitLab服务器的CI/CD权限设置

有时候是GitLab服务器的配置限制了Runner的访问:

  • 进入GitLab的「Admin Area > Settings > Network > Outbound requests」,确认允许本地请求(如果GitLab和Runner在同一局域网的话)。
  • 检查项目的「Settings > Repository > Protected branches」,看看你的分支是不是被设为保护分支导致Runner拉取不到代码——不过一般gitlab-ci-token是有权限的,但也可以排除这个可能性。

5. 升级GitLab Runner到稳定版本

你用的10.5.0版本真的有点老了,很多旧版本的网络和认证问题在新补丁里都修复了。建议升级到最新的稳定版:

# 先停止Runner服务
sudo gitlab-runner stop
# 添加GitLab官方源并安装最新版
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner
# 启动服务
sudo gitlab-runner start

6. 手动测试容器内的网络连通性

如果上面的方法都不管用,直接启动一个node:carbon-alpine容器,测试里面能不能访问GitLab:

docker run -it node:carbon-alpine sh
# 在容器里ping GitLab的域名/IP
ping your-gitlab-url.com
# 用curl试试能不能访问GitLab API
curl https://your-gitlab-url.com/api/v4/projects

要是容器里也访问不了,那就是Docker的网络配置有问题,比如DNS设置不对。可以在/etc/docker/daemon.json里添加DNS服务器:

{
  "dns": ["8.8.8.8", "1.1.1.1"]
}

然后重启Docker服务:

sudo systemctl restart docker

内容的提问来源于stack exchange,提问作者user3058277

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:34:33