docker部署Gitlab教程


Gitlab介紹

GitLab是一個利用Ruby on Rails開發的開源應用程序,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。

 

它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用,便於日后有需要的時候進行查找。開源中國代碼托管平台git.oschina.net就是基於GitLab項目搭建。

docker介紹

注:本次教程是直接從docker去pull別人已經准備好的鏡像,后期還會有如何自己制作鏡像。

docker的優勢

docker五大優勢:持續集成、版本控制、可移植性、隔離性和安全性

對比傳統虛擬機總結

 

特性 容器 虛擬機
啟動 秒級 分鍾級
硬盤使用 一般為MB 一般為GB
性能 接近原生 弱於
系統支持量 單機支持上千個容器 一般幾十個

 

docker系統架構

docker使用客戶端-服務端(C/S)架構模式,使用遠程API來管理和創建docker容器。

docker容器通過docker鏡像來創建。

容器於鏡像的管理類似於面向對象編程中的對象於類。

 

標題 說明
鏡像(images) Docker鏡像是用於創建Docker容器的模板。
容器(Container) 容器是獨立運行的一個或一組應用。
客戶端(Client) docker客戶端通過命令行或者其他工具使用Docker API與Docker的守護進程通信。
主機(Host) 一個物理或者虛擬機的機器用於執行Docker守護進程和容器。
倉庫(Registry) Docker倉庫用來保存鏡像,可以理解為代碼控制中的代碼倉庫。Docker Hub提供了龐大的鏡像集合供使用。
Docker Machine Docker Machine是一個簡化Docker安裝命令的命令行工具,通過一個簡單的命令行即可在相應的平台上安裝Docker,比如VirtualBox、Digital Ocean、Microsoft Azure。

安裝前准備工作

安裝docker-ce

環境規划:

 

主機名 內存 ip
docker01 3G 10.0.0.11

安裝docker

注意:這里我們是從清華源上面下載的docker

 

wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
systemctl start docker && systemctl enable  docker

[root@docker01 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.3
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        a872fc2f86
 Built:             Tue Oct  8 00:58:10 2019
 OS/Arch:           linux/amd64
 Experimental:      false

docker加速配置

加速教程,當配置某一個加速器地址之后,若發現拉取不到鏡像,請切換到另一個加速器地址。centos7安裝docker之后沒有daemon.json文件,需要自己動手創建一個

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4pwh0wn5.mirror.aliyuncs.com"]
}
EOF
#更新配置
sudo systemctl daemon-reload
sudo systemctl restart docker

安裝gitlab准備工作

獲取gitlab鏡像包

docker search gitlab  #查看鏡像
docker pull gitlab/gitlab-ce  #拉取

創建准備gitlab工作目錄

#創建 config 目錄 
mkdir -p /home/gitlab/config 
#創建 logs 目錄 
mkdir -p /home/gitlab/logs
#創建 dat 目錄
mkdir -p /home/gitlab/data 

運行腳本啟動gitlab

docker run -d \
    --hostname 10.0.0.11 \
    --network 
    --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 \
    gitlab/gitlab-ce

參數說明:

參數名稱 參數說明
detach 指定容器運行於前台還是后台
hostname 指定主機地址,如果有域名可以指向域名
publish 指定容器暴露的端口,左邊的端口代表宿主機的端口,右邊代表容器的端口
name 容器名字
restart always 跟隨docker服務啟動
volume 數據卷,在docker中是最重要的一個知識點

修改gitlab.rb配置文件

按照上面的方式,gitlab容器運行沒有問題,但在gitlab上創建項目的時候,生成項目的URL訪問地址是按容器的hostname來生成的,也就是容器的id。作為gitlab服務器,我們需要一個固定的URL訪問,於是需要配置gitlab.rb(宿主機路徑:/home/gitlab/config/gitlab.rb)配置三個重要的參數:

external_url 'http://10.0.0.11' 
gitlab_rails['gitlab_ssh_host'] = '' 
gitlab_rails['gitlab_shell_ssh_port'] = 703

#配置gitlab通過smtp發送郵件
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '1354586675@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'china'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "1354586675@qq.com"
gitlab_rails['smtp_password'] = "xxxxxx"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

進入gitlab容器重啟服務

docker exec -it gitlab /bin/bash  #進入gitlab容器服務
gitlab-ctl reconfigure  #重置gitlab客戶端的命令

由於我們運行是使用數據卷參數進行運行的,宿主機的gitlab.rb文件修改,容器內的配置文件也會修改,但是容器的文件不會跟着生效,必須要進去容器里面進行命令執行,重置配置文件比較浪費時間,需要耐心等待,如果時間比較短說明成功率不高這里內存建議3G因為內存如果是1G這個命令執行不起來

重啟gitlab容器命令

docker restart gitlab #這里重啟容器也需要耐心等待。

檢查啟動信息

[root@docker01 ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS                                                               NAMES
67b087a72785        gitlab/gitlab-ce    "/assets/wrapper"   41 minutes ago      Up 34 minutes (healthy)   0.0.0.0:7003->22/tcp, 0.0.0.0:7002->80/tcp, 0.0.0.0:7001->443/tcp   gitlab


[root@docker01 ~]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::7001                 :::*                    LISTEN     
tcp6       0      0 :::7002                 :::*                    LISTEN     
tcp6       0      0 :::7003                 :::*                    LISTEN     

gitlab常用命令

gitlab-ctl reconfigure     // 重新應用 gitlab 的配置 
gitlab-ctl restart         // 重啟 gitlab 服務 
gitlab-ctl status         // 查看 gitlab 運行狀態 
gitlab-ctl stop         // 停止 gitlab 服務 
gitlab-ctl tail         // 查看 gitlab 運行日志

登錄gitlab界面

這里直接訪問:http://10.0.0.11:7002/,使用宿主ip地址訪問映射端口

注:這里並沒有像其他博主修改什么端口,在創建容器時也需要查看端口是否被占用,如果被占用會出現502的報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM