Docker安裝GitLab全過(guò)程詳解

一、 前言

  • 1、此文檔主要是在Docker上面安裝GitLab,GitLab 是一個(gè)用于倉(cāng)庫(kù)管理系統(tǒng)的開(kāi)源項(xiàng)目,使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建起來(lái)的web服務(wù)。

  • 2、GitLab是利用 Ruby on Rails 一個(gè)開(kāi)源的版本管理系統(tǒng),實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過(guò)Web界面進(jìn)行訪問(wèn)公開(kāi)的或者私人項(xiàng)目。它擁有與Github類似的功能,能夠?yàn)g覽源代碼,管理缺陷和注釋??梢怨芾韴F(tuán)隊(duì)對(duì)倉(cāng)庫(kù)的訪問(wèn),它非常易于瀏覽提交過(guò)的版本并提供一個(gè)文件歷史庫(kù)。團(tuán)隊(duì)成員可以利用內(nèi)置的簡(jiǎn)單聊天程序(Wall)進(jìn)行交流。它還提供一個(gè)代碼片段收集功能可以輕松實(shí)現(xiàn)代碼復(fù)用,便于日后有需要的時(shí)候進(jìn)行查找。

  • 3、注意:由于最近公司項(xiàng)目用到Docker,這里也以Docker為例進(jìn)行詳解,沒(méi)有Docker的童鞋們先補(bǔ)習(xí)一下Docker方面的知識(shí)點(diǎn)。

  • 4、此文章不闡述Docker安裝的過(guò)程,需要了解的同學(xué)們請(qǐng)參考CentOS Docker 安裝

二、Docker的簡(jiǎn)單認(rèn)知

2.1 Docker安裝GitLab的好處

  • 在docker上安裝Gitlab的好處,由于網(wǎng)上很多活雷鋒把整個(gè)gitlab所依賴的軟件都一起打包好成鏡像(Images),我們只需要了解些docker的簡(jiǎn)單命令或安裝過(guò)程中修改些配置即可

2.2 Docker有哪些優(yōu)勢(shì)

Docker五大優(yōu)勢(shì):持續(xù)集成、版本控制、可移植性、隔離性和安全性

  • 對(duì)比傳統(tǒng)虛擬機(jī)總結(jié)


    對(duì)比傳統(tǒng)虛擬機(jī)總結(jié)

2.3、Docker 系統(tǒng)架構(gòu)

Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式,使用遠(yuǎn)程 API 來(lái)管理和創(chuàng)建 Docker 容器。 Docker 容器通過(guò) Docker 鏡像來(lái)創(chuàng)建。
容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類。


Docker 系統(tǒng)架構(gòu)
Docker

3、安裝前準(zhǔn)備工作

3.1 Linux版本

  • 1、Linux的版本是以Centos7為主.命令如下:
cat /proc/version
  • 2、命令輸出的結(jié)果信息


    命令輸出的結(jié)果信息

3.2 Docker版本

  • 1、查看docker的版本命令
docker  version
  • 2 命令輸出的結(jié)果信息


    命令輸出的結(jié)果信息

3.3有哪些加速器服務(wù)進(jìn)行選擇呢?

  • 1、目前有阿里、騰訊、網(wǎng)易云這幾個(gè)巨頭的容器鏡像服務(wù)做得比較好,服務(wù)比較穩(wěn)定,這里推薦阿里云的容器鏡像服務(wù),而且阿里在國(guó)內(nèi)的技術(shù)毋庸置疑,而且經(jīng)過(guò)安裝過(guò)程中可以說(shuō)比較順利,如果使用其他的話不敢保證,經(jīng)過(guò)本人嘗試,在過(guò)程中遇到docker中文社區(qū)拉下來(lái)的鏡像安裝gitlab各種報(bào)錯(cuò)。

  • 2、阿里容器鏡像服務(wù)


    阿里容器鏡像服務(wù)

阿里容器鏡像服務(wù)注意事項(xiàng),如果沒(méi)有賬號(hào)的童鞋們可以通過(guò)注冊(cè)一個(gè)或者淘寶號(hào)可以登錄。

3.4加速器服務(wù)配置步驟

由于CentOs7安裝Docker之后是無(wú)daemon.json文件,需要自己手動(dòng)創(chuàng)建一個(gè)

  • 1、創(chuàng)建一個(gè)目錄如下命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF
  • 3、重新加載daemon文件命令:
sudo systemctl daemon-reload
  • 4、重啟docker服務(wù)命令:
sudo systemctl restart docker
  • 5、開(kāi)機(jī)自動(dòng)啟動(dòng)docker服務(wù)命令:
sudo systemctl enable docker

4、安裝Gitlab準(zhǔn)備工作

4.1獲取gitlab鏡像包

docker pull gitlab/gitlab-ce      這里的Community Edition (CE)表示社區(qū)標(biāo)本,
  • gitlab-ce
  • 這里從阿里鏡像服務(wù)里面拉取gitlab鏡像有點(diǎn)大,需要耐心等待,下載完鏡像之后通過(guò)docker命令可以看到它的大小,可以看到它的文件有1.85G,為什么有那么大呢?因?yàn)間itlab集成了很多依賴軟件

4.2 在本機(jī)準(zhǔn)備gitlab工作目錄

mkdir -p /home/gitlab/config   創(chuàng)建config目錄
mkdir -p /home/gitlab/logs    創(chuàng)建logs目錄
mkdir -p /home/gitlab/data    創(chuàng)建data目錄

4.3 運(yùn)行腳本啟動(dòng)GitLab

docker run --detach \
    --hostname 192.168.1.133 \
    --publish 7001:443 --publish 7002:80 --publish 7003:22 \
    --name gitlab --restart always \
    --volume /home/gitlab/config:/etc/gitlab \
    --volume /home/gitlab/logs:/var/log/gitlab \
    --volume /home/gitlab/data:/var/opt/gitlab 8e28c88b6a21
  • 參數(shù)說(shuō)明:
參數(shù)名稱 參數(shù)說(shuō)明
detach 指定容器運(yùn)行于前臺(tái)還是后臺(tái)
hostname 指定主機(jī)地址,如果有域名可以指向域名
publish 指定容器暴露的端口,左邊的端口代表宿主機(jī)的端口,右邊的是代表容器的端口
name 給容器起一個(gè)名字,
restart always 總是重啟
volume 數(shù)據(jù)卷,在docker中是最重要的一個(gè)知識(shí)點(diǎn).

備注:8e28c88b6a21代表阿里云拉下的鏡像Id,這里只列舉上面腳本的參數(shù)說(shuō)明,詳情請(qǐng)看官方文檔.

4.4 修改gitlab.rb配置文件

  • 按上面的方式,gitlab容器運(yùn)行沒(méi)問(wèn)題,但在gitlab上創(chuàng)建項(xiàng)目的時(shí)候,生成項(xiàng)目的URL訪問(wèn)地址是按容器的hostname來(lái)生成的,也就是容器的id。作為gitlab服務(wù)器,我們需要一個(gè)固定的URL訪問(wèn)地址,于是需要配置gitlab.rb(宿主機(jī)路徑:/home/gitlab/config/gitlab.rb)配置有三個(gè)參數(shù)如:
external_url 'http://192.168.1.133'
gitlab_rails['gitlab_ssh_host'] = '192.168.1.133'
gitlab_rails['gitlab_shell_ssh_port'] = 7003

注意事項(xiàng):external_url 和gitlab_rails這兩個(gè)ip參數(shù)建議固定操作系統(tǒng)的靜態(tài)不變的IP或說(shuō)是域名進(jìn)行配置,假設(shè)IP變得的話在GitLab新建項(xiàng)目的時(shí)候,生成的IP還是原來(lái)的IP,此時(shí)就無(wú)法推送代碼在Gitlab里面

image.png

4.5 進(jìn)gitlab容器重啟配置服務(wù)

docker exec -it gitlab /bin/bash  進(jìn)去gitlab容器的命令
gitlab-ctl reconfigure  重置gitlab客戶端的命令
  • 由于我們運(yùn)行是使用數(shù)據(jù)卷參數(shù)進(jìn)行運(yùn)行的,宿主機(jī)的gitlab.rb文件修改了,gitlab的文件會(huì)跟著改,但是容器的文件不會(huì)跟著生效,必須要進(jìn)去容器里面進(jìn)行命令執(zhí)行,重置配置文件比較耗費(fèi)時(shí)間,需要耐心等待,如果時(shí)間比較短說(shuō)明成功率不高,而且進(jìn)去容器之后就退出啦。


    gitlab-ctl reconfigure

備注:如上信息如果出現(xiàn)了,然后等了將近一分鐘的話,恭喜你在docker安裝Gitlab成功通過(guò)了.

4.6 gitlab容器命令

  • docker start gitlab 啟動(dòng)命令
  • docker restart gitlab 重啟命令
  • docker stop gitlab 停止命令
[root@localhost /]#docker restart gitlab   這里重啟容器也需要耐心等待.

4.7 檢查啟動(dòng)信息

[root@localhost /]# docker ps 
  • docker ps

4.8 再查看本機(jī)端口狀態(tài)

netstat -tnl 命令
  • netstat -tnl 命令

4.9 GitLab常用命令

gitlab-ctl reconfigure  // 重新應(yīng)用gitlab的配置
gitlab-ctl restart    // 重啟gitlab服務(wù)
gitlab-ctl status      // 查看gitlab運(yùn)行狀態(tài)
gitlab-ctl stop      // 停止gitlab服務(wù)
gitlab-ctl tail     // 查看gitlab運(yùn)行日志

5、打開(kāi)GiltLab

5.1打開(kāi)瀏覽器

  • 瀏覽器輸入http://192.168.1.133:7002,如果出現(xiàn)了此界面無(wú)問(wèn)題了,
    由于gitlab安裝之后需要重置密碼,
重置密碼

5.2 GitLab主界面

GitLab主界面

6、總結(jié)與建議

  • 1 、以上問(wèn)題都是根據(jù)搭建GitLab實(shí)際情況進(jìn)行總結(jié)整理,除了技術(shù)問(wèn)題查很多網(wǎng)上資料通過(guò)進(jìn)行學(xué)習(xí)之后梳理。

  • 2、在學(xué)習(xí)過(guò)程中也遇到很多困難和疑點(diǎn),如有問(wèn)題或誤點(diǎn),望各位老司機(jī)多多指出或者提出建議。本人會(huì)采納各種好建議和正確方式不斷完善現(xiàn)況,人在成長(zhǎng)過(guò)程中的需要優(yōu)質(zhì)的養(yǎng)料。

  • 3、希望此文章能幫助各位老鐵們更好去了解如何在Docker里面安裝GitLab,也希望自己看了此文章或者通過(guò)找資料進(jìn)行手動(dòng)安裝效果會(huì)更好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容