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

GitLab Runner使用DinD服务时无法连接Docker容器问题问询

问题根因
  • 你当前使用的DinD模式属于双层Docker架构:作业容器、DinD服务容器都由Runner所在宿主机的外层Docker启动,二者共享外层CI自定义网络;你在作业中docker run启动的测试容器由DinD内部的内层Docker管理,属于内层独立网络段,和外层CI网络天然隔离。
  • 你使用-p 8000:8000做端口映射时,是将测试容器的8000端口映射到了DinD服务容器的网络栈,默认GitLab CI场景下需要显式绑定到DinD的所有网络接口才能被同处外层网络的作业容器访问。
  • 测试容器启动后没有预留初始化时间,刚启动就发起请求也可能导致连接失败。
  • 你原配置script段中多余的- |语法也可能导致脚本执行异常。
解决方案

首先删除script段多余的- |,再按照以下两种方案修改即可:

方案1:显式绑定端口到0.0.0.0

修改docker run命令,显式指定绑定到所有网络接口,同时增加等待时间保证容器初始化完成:

script:
  - apk add curl
  - apk add --no-cache --upgrade bash
  - docker run -d -p 0.0.0.0:8000:8000 jdkelley/simple-http-server
  - sleep 3
  - docker network ls
  - curl docker:8000

方案2:测试容器使用host网络

直接让测试容器共享DinD服务容器的网络栈,无需额外端口映射:

script:
  - apk add curl
  - apk add --no-cache --upgrade bash
  - docker run -d --network host jdkelley/simple-http-server
  - sleep 3
  - docker network ls
  - curl docker:8000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:03