Ⅰ 使用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的問題。
修改密碼:
Ⅱ gitlab 自動備份與清理
一、gitlab的備份
1. 修改gitlab.rb文件
vi /etc/gitlab/gitlab.rb(分別修改備份目錄和備份保留時間)
gitlab_rails[『backup_path』] = 「/var/opt/gitlab/backups」 (修改備份目錄)
gitlab_rails[『backup_keep_time』] = 604800 (7天,默認單位為s)
2. GitLab數據自動備份
1)如果沒有、etcetc/crontab定時任務配置文件,執行crontab -e命令生成該配置文件;
2)編輯/etc/crontab定時任務配置文件,在裡面添加定時任務指令如下:
[root@jenkins ~]$ crontab -e
0 23 * * * /usr/bin/gitlab-rake gitlab:backup:create
3. 重新讀取配置文件
gitlab-ctl reconfigure
4. 重啟gitlab
gitlab-ctl restart
知識小貼士:
在crontab文件裡面,每一行代表一項任務,每行的每個欄位代表一項設置,它的格式共分為六個欄位,逗答局前五段是時間設定段,第六段是要執行的命令段,每個欄位ii之間用空格分割,沒用的段用*代替,格式如下:
m h dom mon dow user command
其中:
m: 表示分鍾,可以是從0到59之間的任何整數。
h:表示小時,可以是從0到23之間的任何整數。
dom:表示日期,可以是從1到31之間的任何整數。
mon:表示月份,可以是從1到12之間的任何整數。
dow:表示星期山讓幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
user : 表示執行的用戶。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件(如舉旅shell文件)