前言:很长一段时间没有写博客了,一来是工作比较忙以及个人一些社区性项目的维护迭代,二来是最近没有好好的进行学习、研究一些事物,没什么值的去记录。不过这些都是借口,记录博文能浪费几个时间?我会自省的...
一:安装docker容器
1.安装docker所需要相关工具集:
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2.设定仓库:
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3.安装最新版本的 Docker Engine-Community 和 containerd:
yum install docker-ce docker-ce-cli containerd.io
安装过程有选项提示的话,请同意。那是接受 gpg密钥。
4.启动docker:
systemctl start docker
5.测试是否正确安装好了docker,安装一下hello word镜像并运行容器(结果忘记截图了,反正就会出现hello word等熟悉字眼,没Error等信息就是成功了):
docker run hello-world
二用Docker运行Gitlab容器
1.拉取Gitlab镜像,gitlab-ce社区版本,后面不接版本号自动拉取最新的版本:
docker pull gitlab/gitlab-ce
2.运行Gitlab镜像(成功后会出现一串字符串):
docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
3.可以通过访问ip:port来访问Gitlab主页。(这里有个坑,可能要等个几分钟才能访问到主页)
4.优化配置,以上通过ip和port是能正常访问没问题,但是如果要在Gitlab上创建项目的时候,该项目的url访问地址是按照容器的id进行生成的。如下图,通过docker ps 可以看到gitlab容器id为“3f277ab4ef2c”,但是我创建一个名为Test的项目后,项目的git和http拉取url竟然不是服务器ip地址,而是“3f277ab4ef2c”,这样肯定是拉取或者提交不了文件到仓库的,我们需要一个固定URL才行。
解决方案:配置gitlab.rb文件,这个文件路径是当时运行gitlab镜像的时命令 -v 后面的 ,可以看上面。所以我的这个文件路径为:/home/gitlab/config/gitlab.rb,进入此文件所在目录,使用vi进行编辑此文件。
vi gitlab.rb
#命令模式下查找到external_url行,默认: #external_url='xxx'。
/ external_url
#将其改为服务器ip和port,如果像我一样是默认80端口的话,只用写ip就ok了,这是改http协议地址。
external_url 'http://ip:port' #填上你的ip和port
#命令模式下查找到gitlab_ssh_host行,默认: #gitlab_rails['gitlab_ssh_host'] = 'xxx'
/ gitlab_ssh_host
#将其改为服务器ip,这里是配置ssh协议地址。
gitlab_rails['gitlab_ssh_host'] = 'ip' #填上你的ip
#命令模式下查找到gitlab_shell_ssh_port行,默认: #gitlab_rails['gitlab_shell_ssh_port'] = 22
/ gitlab_shell_ssh_port
#将其改为当时运行gitlab容器映射出来的端口,222:22,所以我这配 222
gitlab_rails['gitlab_shell_ssh_port'] = 222 #填上你映射的端口
#记住,以上配置了三行请都将前面的注释符 '#' 去掉
#最后切到尾行模式保存退出
:wq
#然后重启gitlab容器
docker restart gitlab
最后稍等片刻,再次打开刚才创建的Test项目,拉取地址就正确了。可以正常拉取和提交了。
一些问题和情况汇总:
一.当把gitlab容器跑起起来访问成功后,第一次打开gtilab首页的时候,需要设置一个新密码。
二.注册账号的时候没有验证邮箱地址,也就是说没有发验证码给注册邮箱进行邮箱验证,这个还是需要到gitlab.rb这个文件进行配置一下,这里具体我就不写了,也不是本文重点,节约篇幅。都是挺简单的,配置相关信息就OK了。如下图:
三:容易出现 502,会引起这个问题有两个原因,1.是端口被占用了,导致unicorn进程无法起来,检查一下你gitlab占用的端口,就是通过docker run的时候配置的那个两个端口(下个问题会介绍),一个http协议一个ssh协议端口,注意,这个端口是容器内部端口,而不是容器内部端口映射出来的外部端口。2.服务器内存不够了,gitlab是挺吃内存的,这问题网上有几种解决办法,如修改unicorn worker进程树,配置swap分区等,大家自行百度解决问题哦。
四:如果按照前面一波操作下来后,却无法访问Gitlab主页面,而且连个502页面都没有?这很可能是因为你在通过docker run来运行gitlab容器的时候 -p选项来映射端口和你配置external_url的时候有问题,比如:gitlab默认端口是80,你通过以下命令来运行gitlab容器和映射端口:
docker run -d -p 4443:443 -p 8080:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
#这里的意思是将宿主4443端口映射到gitlab容器的443端口,宿主的8080端口映射到80端口,宿主的222端口映射到22端口
而你在配置external_url的时候,配成:http://ip:8080,这样你肯定是访问不到gitlab的主页。因为你gitlab容器所映射使用的端口是80。知道后就很好解决了,如果你docker run的时候gitlab容器开放什么端口,external_url就要配置成什么端口。
--------以上是不才程序员所记录总结,若有不正确之处请指出,谢谢。