1. 程式人生 > >docker初體驗,搭建自用的gitlab服務

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。