2016-07-01 64 views
1

我有一個問題,因爲幾天後我無法理解,讓我們暫時修復。使用Gitlab中的Docker撥號tcp I/O超時CI版本

我正在設置一個私人Gitlab + Gitlab CI + Gitlab Docker註冊表環境來託管和測試我的代碼,並在它的跑步者中構建docker圖像。

我試圖在使用docker:dind圖像的Gitlab運行器中構建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 

我嘗試過各種東西,包括: - 一個ping到任何IP正常工作 - 端口是開放的(當我嘗試登錄到端口5005的另一個註冊表它的工作原理) - 從本地機器登錄正常工作

我的架構在服務器上已滿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的HTTP訪問(端口80)經過jwilder/nginx的代理,但Git的訪問和泊塢窗註冊表訪問是直接的。

當我啓動構建,我用的是多克爾執行,因此多克爾容器內置:

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

我的問題似乎是,容器內。然而,我心目中常見的嫌疑犯(網絡和DNS)與其他IP /域可以很好地協作,所以我對這個問題沒有任何線索。

有什麼想法?

回答

0

我想這裏你的註冊表運行在同一個Docker主機上,所以我的猜測是從主機到主機本身在公共IP上的通信被破壞了,可能是因爲一個不好的iptables規則或類似的東西。

+0

就是這樣!我嘗試通過刷新主機上的iptables並正常工作。謝謝!我將調整我的iptables配置。 –