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

GitLab CI/CD中无法安装和更新软件包问题求助

GitLab CI/CD中无法安装和更新软件包问题求助

看起来你遇到的是Docker容器内DNS解析失效,导致apt无法访问Ubuntu软件源的问题,我帮你梳理几个可能的原因和对应的解决办法:


1. 先修复Runner配置里的明显错误

你在GitLab Runner的Docker配置里写了extra_hosts = ["host"],这个格式完全不对!extra_hosts的正确格式应该是"hostname:ip_address",比如"my-server:192.168.1.100"。你只写了"host",Docker无法识别这个无效映射,甚至会干扰整个容器的DNS解析逻辑。

解决步骤:

  • 打开Runner的配置文件(通常路径是/etc/gitlab-runner/config.toml)
  • 删除extra_hosts = ["host"]这一行
  • 重启GitLab Runner:sudo gitlab-runner restart

2. 别再手动修改/etc/resolv.conf(Ubuntu 20.04容器的坑)

在Ubuntu 20.04的Docker镜像里,/etc/resolv.conf默认是软链接到systemd-resolved维护的文件,你直接覆盖它其实不会生效——systemd-resolved会自动还原你的修改。

解决办法:
要么在修改前先删除软链接:

- rm -f /etc/resolv.conf
- echo "nameserver 8.8.8.8" > /etc/resolv.conf
- echo "nameserver 8.8.4.4" >> /etc/resolv.conf

要么干脆删掉CI脚本里修改resolv.conf的步骤——你已经在Runner配置里指定了DNS,Docker会自动把这个配置传递给构建容器,手动修改反而会引发冲突。


3. 检查Docker守护进程的全局DNS配置

如果Runner所在主机的Docker daemon本身DNS配置有问题,即使你在Runner里指定了DNS也没用。

解决步骤:

  1. 登录到GitLab Runner所在的主机
  2. 创建或编辑/etc/docker/daemon.json文件,添加:
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
  1. 重启Docker和Runner:
sudo systemctl restart docker
sudo gitlab-runner restart

4. 先确认容器的网络连通性

你可以在CI的before_script最前面加几个测试命令,定位到底是DNS的问题还是网络不通:

- # 先测试能不能ping通DNS服务器
- ping -c 3 8.8.8.8
- # 再测试能不能解析软件源域名
- nslookup archive.ubuntu.com

如果连ping 8.8.8.8都失败,那说明容器根本连不上外部网络,大概率是主机的防火墙/安全组限制了容器的出站流量,需要检查主机的iptables规则,或者云服务商的安全组是否允许容器访问53(DNS)、80/443(软件源)端口。


5. 换个更省心的镜像试试

Ubuntu 20.04的镜像有时候会因为源的问题导致解析失败,你可以试试用Alpine或者Debian的镜像,这些镜像体积小,预装了基础工具,源也更稳定:
比如换成Alpine镜像,CI脚本可以简化成:

deploy:
  image: alpine:latest
  stage: deploy
  tags:
    - deployment_runner
  only: 
    - development
  before_script:
    - # Alpine用apk安装工具,比apt快很多
    - apk add --no-cache openssh-client git
    - # 后续的SSH配置和原来一致
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - ssh-keyscan -H $SSH_HOST > ~/.ssh/known_hosts

按照上面的步骤一步步排查,应该能解决你的问题!

备注:内容来源于stack exchange,提问作者Adbul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:53:11