古詩詞大全網 - 團隊口號 - 使用Docker部署GitLab

使用Docker部署GitLab

查看是否拉取成功

編寫內容

在該文件目錄下,授予 gitlab_start.sh 執行權限

要註意端口是否被占用

修改 gitlab_start.sh 文件,將映射到宿主機的端口改為 8088 ,或者其它沒被占用的端口

重新運行 ./gitlab_start.sh 文件,報錯如下

這是因為之前的容器雖然沒有運行起來,但是已經創建了,把它刪除掉

重新運行 gitlab_start.sh 文件

可以看到容器成功啟動

創建 docker-compose.yml 文件,並在該文件所在的文件夾目錄下運行 docker-compose up -d

需要事先安裝 docker-compose

安裝docker-compose

:端口和映射目錄可根據需要修改

若開放訪問端口為 80 , external_url 可不加端口號,默認80

若以 3.1 方法創建,需要修改相關配置文件

在Gitlab容器 運行狀態 時,重啟服務,並遠程訪問網站測試

*若訪問Gitlab出現502等錯誤,使用命令檢查錯誤原因

e.g.

查看上述配置文件,查找錯誤原因

[圖片上傳失敗...(image-e9789-1636370071222)]

雖然容器啟動成功,但是卻沒辦法根據 ip:port 訪問gitlab

拉取tomcat鏡像

為了測試8088端口是否可用,先把gitlab的容器暫停

啟動tomcat容器,並將tomcat容器的8080端口映射到宿主機的8088端口

壹切正常,訪問ip:8088,還是和以前壹樣訪問不了

因為之前系統的防火墻壹直是關閉的並且其它的服務能正常訪問,所以沒有懷疑是防火墻的問題

把防火墻打開

訪問之前能正常訪問的服務,果然沒法正常訪問。

把該服務的端口開發,正常訪問。

打開8088端口

再次訪問

返回tomcat的404頁面: HTTP Status 404 – Not Found

雖然是404頁面,但是說明此時的端口是能正常訪問的

把tomcat的容器停止運行,重新運行gitlab容器

雖然沒啟動成功,但離成功更進壹步了:)

嘗試把這個容器刪除掉,再創建壹次後還是得到這個錯誤。

還是訪問不了,檢查壹下GitLab內部是否有問題

壹切正常

我再次換成tomcat容器進行測試,發現8088端口訪問不了了。

但是在宿主機內ping本機是可以的

但是,換成 ip:8088 則不行

根據以上兩篇文章,提出 阿裏雲的內網eth0 網段正好跟Docker 的虛擬網卡都是 172 網段,有沖突

觀察發現我使用的雲服務器也是阿裏雲,並且通過 ifconfig 查看

並且查看阿裏雲的內網ip確實也是 172 開頭。

編輯配置文件 /etc/docker/daemon.json ,若 daemon.json 文件不存在新建即可。

重新啟動docker服務

可以看到docker0 的地址變了。

但是要註意,使用 docker 啟動的服務會默認使用 docker0 ,如果是用 docker-compose 啟動的服務則不會。上面的 br-12aa369ee4a6 對應的是docker-compose啟動的服務,可以看到還是172的網段。

docker-compose up使用自定義的網段的兩種方式(從其根源指定)

根據該文使用方法2,即修改 daemon.json 。但並不能成功訪問,我的環境是: docker:20.10.7 , docker-compose:1.24.1

後面發現訪問不成功的原因在於 docker 與防火墻之間的關系,可以關掉防火墻,開啟 docker ,不能訪問則打開防火墻。在它們之間來回試探 = =。

後面嘗試過關閉 firewalld ,打開 iptables

在啟用 iptables 時,壹般關掉 iptables 可以正常訪問,打開則不能正常訪問。

在啟用 firewalld 時,按照 docker firewalld 之間啟動關閉的順序不同,有時是開著防火墻能訪問,有時是關了防火墻能訪問。

但是容器內不能訪問外部網絡,該問題現在還未解決。 有壹種迂回的解決方法就是容器使用 host 網絡模式

問題 :懷疑是docker,firewalld與iptables之間的設置問題

Docker與IPtables

docker 端口映射 及外部無法訪問問題

Docker and IPtables

還有壹種訪問不了GitLab的情況是端口映射和配置文件有誤。

快速的解決方法:將宿主機端口號和容器號設置相同,可參考下面的博客。

利用GitLab Docker images安裝GitLab(填坑)

[圖片上傳失敗...(image-457ad3-1636370071221)]

如果系統環境正常,安裝會十分順利,壹般不會有奇怪的問題。

我在不同的服務器安裝過

阿裏雲 CentOS 7.6 : 訪問正常,但是因內存不夠出現502錯誤,容器內可正常連接外部網絡

阿裏雲 Alibaba Cloud Linux 2 : 可能不能正常訪問容器,容器內不能正常連接外部網絡。懷疑是防火墻與docker的問題。

修改密碼: