環境背景:
Docker化已經成為一種熱門,記錄一下使用docker引擎安裝gitlab的過程。
測試環境:
系統 | 軟件 | 依賴 |
CentOS 7.4 | GitLab(latest) | docker-ce 18 |
安裝過程:
1. 安裝docker引擎並啟動
[root@server-10 ~]# yum install docker-ce -y //需要去官方下載docker.repo文件 [root@server-10 ~]# systemctl enable docker [root@server-10 ~]# systemctl start docker
2. 獲取gitlab鏡像包
[root@server-10 ~]# docker pull gitlab/gitlab-ce //里面集成的東西較多,鏡像可能比較大
查看下載好的鏡像
[root@server-10 logs]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE gitlab/gitlab-ce latest 991cd608c116 2 weeks ago 1.59GB
3. 在本機准備gitlab工作目錄
[root@server-10 ~]# mkdir -p /data/docker/gitlab/{config,data,logs}
以上在本機建立的3個目錄是為了gitlab容器通過掛載本機目錄啟動后可以映射配置文件,數據文件,日志文件到本機,然后后續就可以直接在本機查看和編輯了,不用再進容器操作。
4. 啟動gitlab(關鍵步驟)
[root@server-10 ~]# docker run -d \ --name gitlab \ --hostname gitlab \ --restart always \ -p 4443:443 -p 8888:80 -p 2222:22 \ //根據需要增減映射相應端口 -v /data/docker/gitlab/config:/etc/gitlab \ -v /data/docker/gitlab/data:/var/opt/gitlab \ -v /data/docker/gitlab/logs:/var/log/gitlab \ gitlab/gitlab-ce:latest
說明:
-d:后台運行
--name:設置容器的名字;
--hostname:設置容器內主機的名字;
--restart:設置容器的重啟策略,可選項: no | on-failure[:max-retries] | always | unless-stopped ;
-p(小寫字母):映射端口,形式:[hostPort:]containerPort,如果不加主機端口,那么會在主機上生成隨機端口;
-v(小寫字母):掛載目錄,形式:[HOST-DIR:]CONTAINER-DIR;
4. 檢查啟動信息
[root@server-10 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c8cdd184582 gitlab/gitlab-ce:latest "/assets/wrapper" About a minute ago Up About a minute (health: starting) 0.0.0.0:2222->22/tcp, 0.0.0.0:8888->80/tcp, 0.0.0.0:4443->443/tcp gitlab
啟動需要一些時間,過一段時間后再次查看
[root@server-10 logs]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c8cdd184582 gitlab/gitlab-ce:latest "/assets/wrapper" 3 minutes ago Up 3 minutes (healthy) 0.0.0.0:2222->22/tcp, 0.0.0.0:8888->80/tcp, 0.0.0.0:4443->443/tcp gitlab
再查看本機端口狀態
[root@server-10 ~]# netstat -tnl 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 :::2222 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 :::8888 :::* LISTEN tcp6 0 0 :::4443 :::* LISTEN
查看本機為gitlab容器新建的工作目錄內容

[root@server-10 ~]# tree -L 2 /data/docker/gitlab/ /data/docker/gitlab/ ├── config │ ├── gitlab.rb // 主要配置文件 │ ├── gitlab-secrets.json │ ├── ssh_host_ecdsa_key │ ├── ssh_host_ecdsa_key.pub │ ├── ssh_host_ed25519_key │ ├── ssh_host_ed25519_key.pub │ ├── ssh_host_rsa_key │ ├── ssh_host_rsa_key.pub │ └── trusted-certs ├── data │ ├── backups │ ├── git-data │ ├── gitlab-ci │ ├── gitlab-rails │ ├── gitlab-shell │ ├── logrotate │ ├── postgresql │ ├── redis │ └── trusted-certs-directory-hash └── logs ├── gitlab-rails ├── gitlab-shell ├── logrotate ├── postgresql ├── reconfigure ├── redis ├── sidekiq ├── sshd └── unicorn
以上可以看出里面集成的東西還是挺多的。
5. 登錄gitlab
在瀏覽器輸入安裝gitlab容器的主機地址,形式 IP:PORT
首次登錄設置新密碼,然后進入下一頁登錄界面,用戶名:root,密碼:<上一頁設定的密碼 >
后面就可以使用了。
6. 排錯
如果初始登錄瀏覽器出現502那么請檢查是否端口沖突,修改文件gitlab.rb相關端口項 unicorn['port'] =PORT;
也可以根據logs目錄中的信息跟蹤查詢,如果出現GitLab external URL must include a schema and FQDN,請嘗試修改gitlab.rb文件中的配置項格式 external_url = 'gitlab.xxx.com' 或者 external_url 'http://138.138.82.10'。
7. 更新GitLab
如果采用上述安裝方法,更新變的很簡單:停止gitlab容器,刪除停止的gitlab容器,獲取新鏡像,再次使用原來的啟動命令啟動出一個新gitlab容器即可。不用擔心數據丟失,只要掛載目錄與之前一致,就會自動讀取主機原來的目錄下的數據。
附. 常用gitlab命令
gitlab-ctl reconfigure // 重新應用gitlab的配置
gitlab-ctl restart // 重啟gitlab服務
gitlab-ctl status // 查看gitlab運行狀態
gitlab-ctl stop // 停止gitlab服務
gitlab-ctl tail // 查看gitlab運行日志
結束.