Docker

在 Docker 中連接 GitLab 和 Gitlab runner

  • March 30, 2020

如何將我的 GitLab 安裝與執行在單獨的 docker 容器中的執行器連接起來?

GitLab 工作正常,可通過http://docker.lcnet:8181訪問

我的第一個問題是,我在哪裡可以找到我的 Gitlab “CI” URL?還是只是我的正常網址?我必須包括港口嗎?

我正在使用這個文件: https ://docs.gitlab.com/ce/ci/docker/using_docker_images.html

這就是我得到的:

ubuntu@docker:~$ sudo docker exec -it gitlab-runner gitlab-runner register

Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://docker.lcnet:8181
Please enter the gitlab-ci token for this runner:
<token from settings>
Please enter the gitlab-ci description for this runner:
[5bf3c5086904]: my-runner
Please enter the gitlab-ci tags for this runner (comma separated):
tag1
ERROR: Registering runner... failed runner=hm-eFuar status=couldn't execute POST against http://docker.lcnet:8181/ci/api/v1/runners/register.json:                                                                      Post http://docker.lcnet:8181/ci/api/v1/runners/register.json: dial tcp: lookup vader.nts on 8.8.8.8:53: no such host
PANIC: Failed to register this runner. Perhaps you are having network problems

我看到存在網路問題,但經過幾個小時的搜尋,我找不到解決這個問題的合適提示。我知道 docker 圖像可以通過 docker-names 相互通信,但是在任何地方都沒有提到如何設置它。

我嘗試輸入“gitlab-ce”(這是執行 gitlab 的 docker 容器的名稱),但它不起作用。

我必須創建一個 docker 網路嗎?

好的,在更深入地研究 docker 之後,我明白我必須使用“連結”將 runner-container 連結到 GitLab 容器。

這是上述文件中缺少的內容。雖然它說不建議在同一台機器上執行 Gitlab 和執行器(我猜這也可以解決問題),但在某些情況下需要它,所以很高興提到容器必須連結:

$ docker run -d -P --name gitlabce gitlab/gitlab-ce:latest
$ docker run -d -P --name runner --link gitlabce:gitlabce gitlab/gitlab-runner:latest

$ docker exec -it runner gitlab-runner register
Running in system-mode.                                                                                                                                                                                                                                       

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):                                                                                                                                                                                        
http://gitlabce  

Please enter the gitlab-ci token for this runner:                                                                                                                                                                                                             
(your token from gitlab->admin->runner) 

Please enter the gitlab-ci description for this runner:                                                                                                                                                                                                       
[a11fa3f389d9]:    

Please enter the gitlab-ci tags for this runner (comma separated):                                                                                                                                                                                            

Registering runner... succeeded                

我是 docker 新手,很抱歉這個瑣碎的問題,但也許它會對其他人有所幫助。

另一種方法是創建一個使用者定義的網路,因為如果我理解正確的話,容器可以在沒有連結的情況下相互通信。

引用自:https://serverfault.com/questions/814164