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。