centos7下使用docker安装gitlab

时间:2021-12-10 16:47:33

环境背景:

Docker化已经成为一种热门,记录一下使用docker引擎安装gitlab的过程。

测试环境:

系统 软件 依赖
CentOS 7.4 GitLab(latest) docker-ce 18

安装过程:

1. 安装docker引擎并启动

[root@server- ~]# yum install docker-ce -y    //需要去官方下载docker.repo文件
[root@server- ~]# systemctl enable docker
[root@server- ~]# systemctl start docker

2. 获取gitlab镜像包

[root@server- ~]# docker pull gitlab/gitlab-ce    //里面集成的东西较多,镜像可能比较大

查看下载好的镜像

[root@server- logs]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 991cd608c116 weeks ago .59GB

3. 在本机准备gitlab工作目录

[root@server-10 ~]# mkdir -p /data/docker/gitlab/{config,data,logs}

以上在本机建立的3个目录是为了gitlab容器通过挂载本机目录启动后可以映射配置文件,数据文件,日志文件到本机,然后后续就可以直接在本机查看和编辑了,不用再进容器操作。

4. 启动gitlab(关键步骤)

[root@server- ~]# docker run -d \
--name gitlab \
--hostname gitlab \
--restart always \
-p : -p : -p : \        //根据需要增减映射相应端口
-v /data/docker/gitlab/config:/etc/gitlab \
-v /data/docker/gitlab/data:/var/opt/gitlab \
-v /data/docker/gitlab/logs:/var/log/gitlab \
gitlab/gitlab-ce:latest

说明:

-d:后台运行

--name:设置容器的名字;

--hostname:设置容器内主机的名字;

--restart:设置容器的重启策略,可选项: no | on-failure[:max-retries] | always | unless-stopped ;

-p(小写字母):映射端口,形式:[hostPort:]containerPort,如果不加主机端口,那么会在主机上生成随机端口;

-v(小写字母):挂载目录,形式:[HOST-DIR:]CONTAINER-DIR;

4. 检查启动信息

[root@server- ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c8cdd184582 gitlab/gitlab-ce:latest "/assets/wrapper" About a minute ago Up About a minute (health: starting) 0.0.0.0:->/tcp, 0.0.0.0:->/tcp, 0.0.0.0:->/tcp gitlab

启动需要一些时间,过一段时间后再次查看

[root@server- logs]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3c8cdd184582 gitlab/gitlab-ce:latest "/assets/wrapper" 3 minutes ago Up minutes (healthy) 0.0.0.0:->/tcp, 0.0.0.0:->/tcp, 0.0.0.0:->/tcp gitlab

再查看本机端口状态

[root@server- ~]# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp6 :::2222 :::* LISTEN
tcp6 ::: :::* LISTEN
tcp6 ::: :::* LISTEN
tcp6 ::: :::* LISTEN

查看本机为gitlab容器新建的工作目录内容

[root@server- ~]# tree -L  /data/docker/gitlab/
/data/docker/gitlab/
├── config
│ ├── gitlab.rb        // 主要配置文件
│ ├── gitlab-secrets.json
│ ├── ssh_host_ecdsa_key
│ ├── ssh_host_ecdsa_key.pub
│ ├── ssh_host_ed25519_key
│ ├── ssh_host_ed25519_key.pub
│ ├── ssh_host_rsa_key
│ ├── ssh_host_rsa_key.pub
│ └── trusted-certs
├── data
│ ├── backups
│ ├── git-data
│ ├── gitlab-ci
│ ├── gitlab-rails
│ ├── gitlab-shell
│ ├── logrotate
│ ├── postgresql
│ ├── redis
│ └── trusted-certs-directory-hash
└── logs
├── gitlab-rails
├── gitlab-shell
├── logrotate
├── postgresql
├── reconfigure
├── redis
├── sidekiq
├── sshd
└── unicorn

以上可以看出里面集成的东西还是挺多的。

5. 登录gitlab

在浏览器输入安装gitlab容器的主机地址,形式 IP:PORT

centos7下使用docker安装gitlab

首次登录设置新密码,然后进入下一页登录界面,用户名:root,密码:<上一页设定的密码 >

centos7下使用docker安装gitlab

后面就可以使用了。

6. 排错

如果初始登录浏览器出现502那么请检查是否端口冲突,修改文件gitlab.rb相关端口项 unicorn['port'] =PORT

也可以根据logs目录中的信息跟踪查询,如果出现GitLab external URL must include a schema and FQDN,请尝试修改gitlab.rb文件中的配置项格式 external_url = 'gitlab.xxx.com' 或者 external_url  'http://138.138.82.10'。

7. 更新GitLab

如果采用上述安装方法,更新变的很简单:停止gitlab容器,删除停止的gitlab容器,获取新镜像,再次使用原来的启动命令启动出一个新gitlab容器即可。不用担心数据丢失,只要挂载目录与之前一致,就会自动读取主机原来的目录下的数据。

附. 常用gitlab命令

gitlab-ctl reconfigure  // 重新应用gitlab的配置
gitlab-ctl restart    // 重启gitlab服务
gitlab-ctl status      // 查看gitlab运行状态
gitlab-ctl stop      // 停止gitlab服务
gitlab-ctl tail     // 查看gitlab运行日志

结束.