2015-11-30 160 views
4

我有在測試環境中運行的GitLab的最新碼頭圖像,我遇到了GitLab亞軍的問題。這是無法通過HTTP鏈接克隆,得到以下信息:GitLab亞軍無法通過http克隆存儲庫

Running on runner-bd27e50b-project-1-concurrent-0 via machine... 
Cloning repository... 
Cloning into '/builds/my/awesome-project'... 
fatal: unable to access 'http://gitlab-ci-token:[email protected]/my/awesome-project.git/': Failed to connect to 127.0.0.1 port 80: Connection refused 

ERROR: Build failed with: exit code 1 

我跑gitlab亞軍與--debug標誌,並用它試圖(與-圓通令牌)的確切地址,我可以克隆存儲庫就好了。我不知道爲什麼服務無法克隆存儲庫。跑步執行者也被配置爲'碼頭'。也許有一些端口映射問題進入該容器?

回答

5

我推測這個問題可能與將跑步者註冊爲碼頭容器導致本地主機地址不能解析到正確的機器(我開始跑步者的地方)有關。在這種情況下,它可能會解析爲容器。在docker代理界面上使用主機IP(對我來說爲172.17.0.1),或者在註冊runner時使用主機的真實地址而不是「localhost」來修復問題。

編輯:這是一個更詳細的問題,因爲我的理解和解決方案。裝載的docker實例就像一個(非常)輕量級的虛擬機。泊塢窗配置一個虛擬網絡接口,如果您從您的主機運行ifconfig你會看到:

[email protected]:~> ifconfig 
docker0 Link encap:Ethernet HWaddr XXXX 
      inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 
      ... 

這是主機的該接口的IP地址。因此,如果您希望運行器能夠連接到該主機上運行的服務,則不能將其指向localhost/127.0.0.1,因爲它來自運行程序的實例,將會路由到運行程序的「 VM「,但GitLab沒有運行在運行程序」VM「內,它在主機上,因此運行程序無法與GitLab進行通信。

的解決方案是註冊轉輪指向泊塢窗界面(http://172.17.0.1/ci我)對主機的虛擬地址,或者如果你有一個使用主機的公網IP或域名,它的公共訪問。只是不要將它發送到localhost或127.0.0.1,因爲對運行者來說,它指向它的「VM」,而不是你的GitLab實例。

+0

我有同樣的問題。你能擴展你的答案嗎?你究竟如何改正它? – Onlyjus

+0

@Onlyjus我加了一點更多的解釋,希望有幫助。TL; DR:註冊您的跑步者以在Docker虛擬網絡適配器上指向您的主機IP。 – Anthony

4

我知道這個問題已經很老了,但是您可以使用稍微不同的方法(如果您使用碼頭運行員時遇到同樣的問題,則爲)。

在域名下運行Gitlab--它可能是完全虛擬的,只要確保所有的虛擬機都能解析域名即可。

然後修改/etc/gitlab-runner/config.tomlextra_hosts變量添加到[runners.docker]部與值["your_domain_name:ip_address"]。您還可以添加您可能需要的任何其他主機。

您可以在 https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md

+0

通常'privileged = true'和'volumes = [「/var/run/docker.sock:/var/run/docker.sock」,「/ cache」]'在同一部分也是有用的建立圖像 – vladkras

0

至於現在找到亞軍配置的詳細信息(gitlab的最新版本 - 9和向上),你需要使用HTTPS 適當的SSL證書。
只要你用https://添加新的跑步者,所有人都應該工作得很好。