在Gitlab CI构build中使用Docker拨号tcp I / O超时

自从几天以来我有一个问题,我不能理解,让我们放下修复。

我正在设置一个私人的Gitlab + Gitlab CI + Gitlab Dockerregistry环境来托pipe和testing我的代码,并在一个跑步者中build立它的泊坞窗图像。

我正在使用docker:dind图像在Gitlab runner中构build一个Docker镜像。 我有以下错误:

gitlab-ci-multi-runner 1.3.2 (0323456) Using Docker executor with image docker:latest ... Pulling docker image docker:dind ... Starting service docker:dind ... Waiting for services to be up and running... Pulling docker image docker:latest ... Running on runner-c682f650-project-23-concurrent-0 via 4b1582b2cffb... Fetching changes... HEAD is now at 7f10ed4 Finalize Docker and Gitlab CI workflow Checking out 7f10ed4c as gitlab-ci-docker... $ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.ademis.com:5005 Error response from daemon: Get https://registry.ademis.com:5005/v1/users/: dial tcp 46.105.98.95:5005: i/o timeout 

我尝试了各种各样的东西,包括: – 任何IP的ping工作正常 – 端口是开放的(当我尝试login到端口5005上的另一个registry工作) – 从本地机器login工作正常

我的架构在服务器上是完整的Docker。 我有三个主要的容器(我有其他的,但不涉及这个问题):

 jwilder/nginx-proxy devserver_front_1 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp gitlab/gitlab-ce:latest devserver_gitlab_1 80/tcp, 0.0.0.0:22->22/tcp, 0.0.0.0:5000->5000/tcp, 0.0.0.0:5005->5005/tcp, 443/tcp gitlab/gitlab-runner:latest devserver_runner_1 

对Gitlab(端口80)的HTTP访问通过jwilder / nginx-proxy,但Git访问和Dockerregistry访问是直接的。

当我启动构build时,我使用Docker执行程序,因此构build了一个Docker容器:

 8ae8af78bc1b runner-c682f650-project-23-concurrent-0-cache-b36a40d3c05f7c6ff01d711a44f0d239 

我的问题似乎是在该容器内。 然而,我心中常见的嫌疑犯(networking和DNS)与其他IP /域名一起工作良好,所以我对这个问题没有任何线索。

任何想法?

我想这里你的registry运行在同一个Docker主机上,所以我的猜测是主机到主机本身在公共IP上的通信被破坏,可能是因为一个不好的iptables规则或类似的东西。