环境描述
因为Git操作起来是非常麻烦的,所以特增加gitlab 优势如下:
GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表,当通过SSH访问GitLab Server时,GitLab Shell会:
- 限制执行预定义好的Git命令(git push,git pull,git annex)
- 调用GitLab Rails API检查权限
- 执行pre-receive钩子(在企业版中叫做Git钩子)
- 执行用户请求的动作,处理GitLab的post-receive动作
- 处理自定义的post-receive动作
当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码:
如果是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作
如果是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:
- 调用GitLab Rails API 检查权限
- 执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
- 执行你请求的动作
- 处理GitLab的post-receive动作
2 确保安装顺利,linux先关闭selinux服务,否则容器内部可能权限不足
vi /etc/selinux/config
-------------------------------
SELINUX=enforcing? #
注释掉
SELINUXTYPE=targeted #
注释掉
SELINUX=disabled #
增加
:wq! #
保存退出
-------------------------------
setenforce 0 #
使配置立即生效
3 搜索和下载gitlab镜像
#
搜索镜像
docker search gitlab
#
下载镜像
sudo docker pull gitlab/gitlab-ce:latest
#
本人测试的版本是:
sudo docker pull gitlab/gitlab-ce:11.3.6-ce.0
4 创建docker中的网络
docker network create gitlab_net
5 使用镜像创建容器,并且使重要数据外部挂载到宿主机
docker run --name='gitlab' -d \
--net=gitlab_net \
--publish 443:443 --publish 80:80 --publish 22:22 \
--restart always \
--volume ~/docker/gitlab/config:/etc/gitlab \
--volume ~/docker/gitlab/logs:/var/log/gitlab \
--volume ~/docker/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:11.3.6-ce.0
##
查看容器是否运行起来
docker ps | grep gitlab
参数解析
1)http端口使用 80
2).网络使用 gitlab_net网络
3).将容器内部 /etc/gitlab,/var/log/gitlab,/var/opt/gitlab - 挂载到宿主机的 /root/docker/gitlab/config,logs,data 下,防止容器被删除数据丢失
4).privileged=true 使用特权,怕什么地方权限不足,安装不顺
5)./root/docker/gitlab下的config,logs,data没有的话,创建容器
会一并创建
6)git docker中的端口号也是22记的与外面的映射最好也是22,这样后期访问还方便一些
6 修改配置文件中的访问域名
vim ~/docker/gitlab/config/gitlab.rb ... 其实就是 /root/docker/gitlab/config/gitlab.rb external_url 'http://gitlab.youni.com/'
# 用户访问所使用的 URL ,域名或者 IP 地址 ...
7 打开浏览器看成效
浏览器输入 http://gitlab.youni.com/ 进行访问,第一次登陆需要修改密码
这样子就安装OK了,输入账号密码进行注册
如果上面界面无法显示直接访问下面地址进行初始密码修改
http:// gitlab.youni.com /users/password
修改完后用户密码登陆用户为root 密码为设置的密码
1)创建组:
2)创建用户:
3)用户授权
4)创建project
5)阻止用户自动注册
将红框中去掉
6)分配ssh
7)常见问题
1、访问浏览器被拒绝,不要慌 使用 docker logs gitlab 查看日志,看报什么错,进行解决
2、访问返回502,一般情况下是端口冲突
修改gitlab.rb文件,设置端口,重启容器,稍等一会访问
#
编辑文件
vi /root/docker/gitlab/config/gitlab.rb
#
找到
unicorn['port'] = 80
的地方,修改为不会被占用的端口
unicorn['port'] = 8080
#
保存
:wq!
#
重启容器
docker restart gitlab
3、访问比较缓慢
因为镜像就有一个多G,每次启动容器,重启,需要花一段时间等待。
4、访问还是502
看看CPU占用率,电脑容量,有些情况是因为CPU、内存耗尽导致,如果我能否正常启动请先把gitlab.rb文件下external_url 'xxx' 注释掉或做更改变化