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

GitLab Dind服务问题:嵌套容器中使用Docker遇域名解析异常

GitLab CI嵌套Docker调用问题解答

问题1:job容器中nc能连通docker服务,但host命令解析失败

在GitLab CI的job容器环境里,docker服务名的解析依赖Docker内置的DNS服务器(127.0.0.11),它会把服务名映射到对应的dind容器IP:

  • nc命令使用系统标准的域名解析接口,会优先读取容器/etc/resolv.conf里配置的DNS(默认包含127.0.0.11),所以能正确解析docker并建立连接。
  • 而host工具(来自bind-tools)默认会直接调用外部公共DNS服务器,这些外部DNS无法识别GitLab CI内部的服务域名,自然解析失败。你可以执行host docker 127.0.0.11验证,指定Docker内置DNS就能正常解析出IP。

问题2:嵌套容器无法解析docker服务

你启动嵌套容器时用了--network "host"参数,这会让嵌套容器共享job容器的网络命名空间,但存在关键问题:
嵌套容器内部的127.0.0.11(Docker内置DNS地址)指向的是嵌套容器自身的localhost,而非job容器里的Docker DNS服务。当嵌套容器尝试解析docker服务名时,会向自身的127.0.0.11发请求,但这个DNS服务根本不存在,所以解析失败。

解决思路:

  • 去掉--network "host"参数,让嵌套容器使用默认bridge网络,这样它会继承job容器的DNS配置,能通过Docker内置DNS解析docker服务名。
  • 或者手动指定docker服务的IP映射,启动嵌套容器时添加--add-host docker:<dind-service-ip>参数(可以在job容器里先通过getent hosts docker获取dind服务的IP)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:05:22