一、安装及配置

1.gitlab镜像拉取

# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce

2.运行gitlab镜像

sudo docker run -itd \
--publish 443:443 --publish 9980:80 --publish 9922:22 \
--name gitlab \
--restart always \
--privileged=true \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

 

参数说明:

-i 以交互模式运行容器,通常与 -t 同时使用命令解释:
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID 同--detach
--hostname: 设置容器的 hostname,如果是本地localhost ,否则使用外网ip
--publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,9922:Docker 容器中 ssh 访问端口)
--name:容器名称
--restart always:每次启动容器就重启GitLab
--volume: 共享目录挂载,即 docker 容器内外数据共享(/srv/gitlab/data: 应用程序数据,/srv/gitlab/logs:GitLab 的 log,/srv/gitlab/config:GitLab 的配置文件)
--privileged=true 让容器获取宿主机root权限
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID

3.配置

# 配置请在容器内进行修改,不要在挂载到宿主机的文件上进行修改。否则可能出现配置更新不到容器内,或者是不能即时更新到容器内,导致gitlab启动成功,但是无法访问

3.1 进入容器内

docker exec -it gitlab /bin/bash

3.2修改gitlab.rb 

# 打开文件
vi /etc/gitlab/gitlab.rb
 
# 这个文件是全注释掉了的,所以直接在首行添加如下配置
 
  
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
eaxternal_url 'http://192.168.254.50:9980'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.254.50'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

3.3 修改gitlab.yml (这一步原本不是必须的,因为gitlab.rb内配置会覆盖这个,为了防止没有成功覆盖所以我在这里进行配置,当然你也可以选择不修改gitlab.rb直接修改这里)

# 打开文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

## Web server settings (note: host is the FQDN, do not include http://)
    host: 192.168.254.50
    port: 9980
    https: false

ssh_host: 192.168.254.50
ssh_port: 9922

3.4让修改后的配置生效

gitlab-ctl reconfigure

3.5重启gitlab 

gitlab-ctl restart

3.6 退出容器 

exit

4.访问

在游览器输入如下地址,访问gitlab(eaxternal_url配置的就是这个) 
http://192.168.254.50:9980

 第一次访问默认是root账户,会需要修改密码(密码至少8位数,出现如下界面就基本上部署成功了)

gitlab的docker启动 gitlab docker部署_git

 

 

5.异常

内存不足502错误如下图所示:

解决方案:服务器内存至少4G

gitlab的docker启动 gitlab docker部署_docker+gitlab_02

6.关闭注册

为了安全起见,关闭用户注册功能,使用root用户登录gitlab

6.1、点击【Admin Area】 

 

gitlab的docker启动 gitlab docker部署_gitlab的docker启动_03

 

 6.2 点击【Settings】 

 

gitlab的docker启动 gitlab docker部署_docker_04

 

 6.3 点击Sign-up restrictions这一栏的【Expand】取消sign-up enabled 勾选 保存即可

gitlab的docker启动 gitlab docker部署_git_05

 

 6.6 进入登录界面,发现注册的窗口已经消失了

gitlab的docker启动 gitlab docker部署_重启_06

至此大功告成!