天天看點

docker初體驗,搭建自用的gitlab服務

一、前言

git在如日中天的版本管理系統,現在如果不是工作在git版本管理系統下,幾乎都不好意思給人打招呼。現在就有現成的網際網路的git伺服器提供給大家使用,例如号稱程式的社交網絡github。

正好gitlab公司提供了gitlab社群版,gitlab安裝方式又很多安裝方式,最友善的使用docker方式安裝,現在講步驟記錄下,希望對有需求的人有所幫助。

二、docker安裝

首先是安裝 docker 環境了。我是在 centos 7 的基礎上安裝的。根據官網的指南

1、增加docker yum源

新的docker yum源叫做docker-ce,如果第一次安裝docker-ce需要設定docker-ce的yum源。用如下指令來增加docker-ce的yum源

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test           

2、如果你之前安裝過docker,删除舊版本的docker

舊版本的 docker 的叫做 docker 或者 docker-engine,如果系統中已經安裝舊版本,則需要删除。通過一下指令删除舊的 docker 版本。

yum remove docker docker-common docker-selinux docker-engine           

3、安裝docker-ce

首先我們檢查一下所有有效的docker-ce的版本

yum list docker-ce --showduplicates | sort -r           

我們選擇最新的額穩定版是18.06.1.ce。我們使用下面的指令安裝該版本

yum install docker-ce-18.06.1.ce           

這個安裝時間比較長吧,靜靜等待,大約花費4min

4、啟動docker

執行如下的指令啟動 docker 的服務

systemctl start docker           

執行如下指令,檢視docker資訊

docker info           

目前我沒有修改docker配置,我覺得docker下載下傳鏡像速度還行,并沒有網上說的很慢,暫時不修改運作目錄和鏡像倉庫位址

上述完成了docker安裝。接下來安裝gitlab

三、安裝gitlab

1、下載下傳鏡像

docker pull gitlab/gitlab-ce:latest           

鏡像有1g多,需要等待一段時間

2、資料持久化儲存

因為docker容器的資料是不能持久化儲存的。是以我們需要使用docker volume的方式将存儲的資料映射到作業系統的目錄中來。這樣就算運作的容器奔潰了,我們從新啟動一個新的容器。原來容器的資料還是不會丢失

我們建立目錄/home/databaken/gitlab來儲存gitlab容器中的資料

3、準備映射sshd

在系統防火牆中打開HTTP和SSH通路,git是采用ssh協定來操作git倉庫的,我們将主機的sshd的22端口映射到容器中去。将主機的sshd端口更改為15678.這裡是centos7的更嚴格的安全機制,算是一個坑,按照下面步驟進行

(1)編輯檔案/etc/ssh/sshd_config,将其中的#port 22注釋去掉,将數字22修改為15678

(2)執行指令重新開機sshd服務

systemctl restart sshd           

(3)運作下面的指令是15678端口可以對外提供服務。否則無法遠端的ssh登陸

semanage port -a -t ssh_port_t -p tcp 15678
firewall-cmd --permanent --add-port=15678/tcp
firewall-cmd --reload            

告訴我firewall服務沒有啟動,使用下面指令啟動防火牆指令

//運作防火牆服務
systemctl start firewalld.service           

因為之前乜有開啟防火牆服務,這一啟動,4個系統都無法通路,需要将80端口和443端口允許外網通路到。

4、運作gitlab

我把本地服務防火牆的22端口也放開

然後運作gitlab

docker run \
    --publish 4433:443 --publish 9001:80 --publish 22:22 \
    --name gitlab \
    --volume /home/databaken/gitlabdata/config:/etc/gitlab \
    --volume /home/databaken/gitlabdata/logs:/var/log/gitlab \
    --volume /home/databaken/gitlabdata/data:/var/opt/gitlab \
    gitlab/gitlab-ce           

這裡把主機的 4433、9001、22 端口直接轉發到容器,意思就是說:本地服務的4433端口,8080端口,22端口已經占用,通路本地服務的4433端口就是通路docker容器gitlab的443端口,通路本地服務的9001端口就是通路docker容器gitlab的80端口,通路本地服務的22端口就是通路docker容器gitlab的22端口。

同時利用 --volume /home/databaken/gitlabdata/config:/etc/gitlab 、

 --volume /home/databaken/gitlabdata/logs:/var/log/gitlab 、 

--volume /home/databaken/gitlabdata/data:/var/opt/gitlab 

這三個參數将 gitlab 的配置、資料和日志持久化到主機檔案系統上來。

按照道理,這個時候,你直接通路伺服器的ip:9001,就可以通路到gitlab,糟糕的是自己伺服器是1核1G運作記憶體,哈哈。。。。肯定是跑不起來gitlab,因為說gitlab要求最低是4G運作記憶體,雖然我嘗試了swap,建構了2G的虛拟記憶體,但是gitlab跑起來還是,容器還是奔潰了。

伺服器運作記憶體太低,是以暫時不考慮跑gitlab。

相應錯誤可以在https://www.mwcxs.top/topic/item/45.html查到。

 與交流學習社群同步:https://www.mwcxs.top/page/436.html

文中有錯誤的地方希望指出,共同進步