以前接触了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环境进入百度的网页,很丑,使用键盘可操做性不好。