docker 安装 gitlab
先配置镜像加速器
编辑下面文件(如果没有则新建)
vim /etc/docker/daemon.json
写入如下内容
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
systemctl daemon-reload systemctl restart docker
我这里用的版本是:gitlab/gitlab-ce:14.8.2-ce.0
环境处理
#1:防火墙是否开启,开启了可以直接关闭,如果不能关闭,就把所需的端口进行开放 systemctl status firewalld #2:开放指定端口(因为22一般被sshd服务占据,所以这里用222端口) firewall-cmd --zone=dmz --add-port=80/tcp --permanent firewall-cmd --zone=dmz --add-port=443/tcp --permanent firewall-cmd --zone=dmz --add-port=22/tcp --permanent firewall-cmd --zone=dmz --add-port=222/tcp --permanent firewall-cmd --reload #刷新 firewall-cmd --zone=dmz --list-ports
然后在重启 docker
systemctl restart docker # 重启 docker
拉取镜像
docker pull gitlab/gitlab-ce:14.8.2-ce.0
生成挂载目录
# 生成挂载目录 mkdir -p /home/gitlab/etc/gitlab mkdir -p /home/gitlab/var/log mkdir -p /home/gitlab/var/opt
启动容器,添加挂载路径,–privileged=true 要加上,不然可能因为权限问题导致启动失败
# 启动容器 docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab-dev --restart always --privileged=true -v /home/gitlab/etc/gitlab:/etc/gitlab -v /home/gitlab/var/log:/var/log/gitlab -v /home/gitlab/var/opt:/var/opt/gitlab gitlab/gitlab-ce:14.8.2-ce.0
- -i :以交互模式运行容器,通常与 -t 同时使用命令解释
- -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -d :后台运行容器,并返回容器ID
- -p:80:80 将容器内 80 端口映射至宿主机 80 端口,这是访问 gitlab 的端口
- -p:222:22 将容器内22端口映射至宿主机222端口,这是访问 ssh 的端口
- -v :/home/gitlab/etc/gitlab:/etc/gitlab 将容器/etc/gitlab 目录挂载到宿主机 /home/gitlab/etc/gitlab 目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
- –restart always :容器自启动
- –privileged=true :让容器获取宿主机 root 权限
- –name gitlab-dev :设置容器名称为 gitlab-dev
- gitlab/gitlab-ce:14.8.2-ce.0 :镜像的名称,这里也可以写镜像ID
查看容器是否启动
容器正常启动的
调整 gitlab 的配置
修改 gitlab.rb 配置文件操作最好是在容器内进行修改(也可以在宿主机映射目录中修改,记得修改完后进入容器验证修改结果),在挂载到宿主机的文件上直接进行修改可能会出现配置更新不到容器内,或者是不能即时更新到容器内,导致 gitlab 启动成功,但是无法访问或其它问题。
gitlab.rb文件内容默认全部注释
vim /home/gitlab/etc/gitlab/gitlab.rb # 配置 http 协议所使用的 gitlab 访问地址,可以写域名。如果端口不写的话默认为 80 端口 external_url 'http://10.6.215.220' # 配置ssh协议所使用的访问地址和端口 gitlab_rails['gitlab_ssh_host'] = '10.6.215.220' gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是 run 时 22 端口映射的 222 端口
在容器改需要先进入容器在改
# 进入容器 docker exec -it gitlab-dev /bin/bash # 修改 vi /etc/gitlab/gitlab.rb
重启 gitlab 容器
docker restart gitlab-dev
如果看到下面页面则安装成功,重启之后需要等待会
登录 gitlab
上面我们已经可以正常访问到登录页面了,但没有账号和密码怎么办?
gitlab 给我们的管理员账户是 root,Gitlab 默认的管理员临时密码在 gitlab 容器中 /etc/gitlab/initial_root_password 文件中,如果该路径下没有这个文件,我们就无法正常登录到 gitlab中去
因为我们挂载到本地了,所以可以在本地看到
cat /home/gitlab/etc/gitlab/initial_root_password
但是超级管理员的密码太复杂了,我们可以修改它,操作步骤如下
# 进入容器内部 docker exec -it gitlab-dev /bin/bash # 进入控制台,等待控制台加载完毕 gitlab-rails console -e production # 查询id为1的用户,id为1的用户是超级管理员 user = User.where(id:1).first # 修改密码为12345678,必须同时更改密码和password_confirmation才能使其正常工作 user.password = '12345678' user.password_confirmation = '12345678' # 保存 user.save # 退出 exit
这样密码就修改完成了,最后我们可以拿 root 和 12345678 登录 gitlab
配置Gitlab界面语言为中文
gitlab 默认是英文的,对英文不好的不太友好,gitlab 里可以设置成中文,但不是所有的都会翻译成中文,只有大部分会
操作步骤如下
保存后刷新一下页面,就变为中文的了