以前接觸了linux,也知道目前幾年都是流行的docker,故有想而發,在雲上的docker上搭建工做的gitlab能夠給本身使用,也同時能夠接觸下大名鼎鼎的docker容器。so do it。前端
docker做爲容器的好處,從本身搭建gitlab的就可想而知到的不少的好處,它幫你gitlab打包了幾乎全部相關的配置,並且一次安裝配置使用,能夠多種機器上覆用。docker做爲一個鏡像神器,它能夠幫你安裝全部相關的依賴和命令,傳統上的安裝gitlab須要安裝redis、ruby等環境,安裝會更繁瑣複雜,而docker能夠打包幫你全部環境都一次依賴一次能夠幫你設置好,這是它的最大優勢,節省了咱們開發大量的時間。linux
docker須要的環境是centos 6.5以上,內核3.1 以上 64位的系統,而恰好本地使用的環境是centos7環境git
下面咱們的搭建之旅:redis
我的系統環境是linux centos 7,下面安裝主要是使用了yum來進行docker的安裝。docker
下面咱們來看看yum是什麼?shell
Yum(全稱爲 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。 json
安裝docker
yum -y install dockerubuntu
啓動docker服務centos
systemctl start docker安全
systemctl enable docker //設置自啓動
若是這兒沒有作自啓動,會出現重啓服務器後,docker服務沒有啓動,須要本身手動啓動服務,這個命令至關於
在自啓動配置腳本文件中加入了自啓動,下次重啓服務器的時候就萬事大吉了。
緊接着能夠輸入docker能夠查看是否安裝成功
docker -V 查看docker安裝的版本
也能夠輸入 ps -ef|grep docker查看是否啓動了docker服務
而後咱們使用docker來下載和安裝鏡像
docker pull gitlab/gitlab-ce:latest
拉取gitlab安裝程序 最新版本
這兒咱們使用的gitlab-ce是社區版本,gitlab/gitlab-ee是企業版本須要收費。
在啓動鏡像前,咱們會使用到讓gitalb自啓動等,命令以下
sudo docker run --detach -d -h gitlab.mylab.danny.com -p 443:443 -p 80:80 -p 22:22 --name gitlab --restart always -v /root/data/gitlab/config:/etc/gitlab -v /root/data/gitlab/logs:/var/log/gitlab -v /root/data/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce
--restart always 設置容器自啓動--這兒比較關鍵,由於docker之後,咱們是須要它須要的服務容器也是自啓動的。
映射端口以前,咱們能夠查看下是否有進程使用了對應的端口
查看須要運行 和映射的端口有被佔用命令
可使用lsof (list open files)查看端口和網絡鏈接、硬件等的命令
lsof -i:端口
若是沒有安裝losf模塊,直接使用yum的命令,yum仍是很好使的,yum install -y losf
在設置了上面兩個啓動之後,其實有個點事,服務器重啓的過程,小編這兒本身測試過,服務器從新啓動之後,docker啓動,而後再啓動gitalb服務鏡像須要一點的大概可能一分鐘左右。我的配置是4g內存。
這兒咱們是否就萬事大吉了呢,沒有,一個咱們須要對若是本身有防火牆或者安全策略須要開放上面映射的端口,進行配置。若是是阿里雲上試過,須要進入安全組策略進行配置端口開放。
在上面配置中,由於centos的22端口是被本地的centos遠程服務使用的,這兒不太懂,看了有大神的文章,作了以下配置更改,才解決了我的gitlab的登陸和註冊會出現422的問題。下面咱們準備映射sshd
對於Linux中的sshd服務,它的功能是讓遠程主機能夠經過網絡訪問sshd服務,開始一個安全shell,我的蒐集對於ssh的概念,sshd做爲服務,是提供了包括ssh配置的的相關服務的一個服務進程。
另外,爲了 git 採用 ssh 協議來操做 git 倉庫,咱們將主機的 sshd 的 22 端口映射到 容器中去。將主機
的 sshd 端口更改成 15678。由於咱們下面命令gitlab使用到的端口是22,一般ssh遠程登陸的默認端口是22,這個端口通常是能夠更改或者添加的,配置文件位置在:/etc/ssh/sshd_config經過編輯文件能夠修改sshd服務的相關配置,如下修改linux端口15678
編輯文件 /etc/ssh/sshd_config,將其中的 #Port 22 註釋去掉,將數字 22 更改成 15678
固然也能夠去gitlab的配置文件中去進行操做,修改gitlab的默認端口,就能夠不用改動linux centos默認的遠程登陸端口22了。
這兒能夠直接使用vi /etc/ssh/sshd_config 編輯。對應vi的命令我的也遇到一些不懂的坑,同是小白也請自查。
執行下面的命令重啓 sshd 服務
systemctl restart sshd
複製代碼
運行下面的命令使 15678 端口能夠對外提供服務。不然沒法進行遠程的 ssh 登陸。
semanage port -a -t ssh_port_t -p tcp 15678
firewall-cmd --permanent --add-port=15678/tcp
firewall-cmd --reload
設置完不一樣端口,開放對應的端口,若是是阿里雲鬚要手動去安全組策略進行配置開放此端口。
對應centos 7還須要作個配置,由於小編下載docker是1.13, 若是docker版本大於等於1.10,就能夠直接使用下面的配置方法。配置方法很簡單,在/etc/docker/daemon.json中添加一段配置。如
果沒有該文件則建立。
{
"registry-mirrors": ["<your accelerate address>"]
}
這兒參考了 https://juejin.im/post/5a4c9ff36fb9a04507700fcc
以上配置完,咱們就能夠輸入本身的公網仍是內網就能夠進入咱們本身的gitlab網頁了。中間也是遇到比較多的坑,好比自啓動、gitlab內網能夠訪問,外網訪問不了等問題,解決了如今能夠正常完美使用。
下面附帶本身遇到問題常用的部分命令
docker:
須要重裝docker某鏡像服務:
docker stop xxx 中止xx容器
docker rm xxx 刪除xx容器
docker start xxx
vi 編輯器
ESC 退出插入模式
輸入 /單詞 回車搜索匹配的字符
輸入 :q 退出
輸入:w 保存
輸入:qw保存退出
輸入:q!強制退出
當時想看配置完是否成功,看內網是否先能夠訪問,當時不知道端口開放與否問題,安裝了 w3m,後來發現內網能夠打開gitlab,後門才問了一個服務端朋友是端口開放的問題。解決。
w3m經常使用命令:不太建議用,對於centos下很差操做。或許ubuntu系統支持桌面的unix系統纔是它的好的選擇。
w3m www.baidu.com
直接linux環境進入百度的網頁,很醜,使用鍵盤可操做性不好。