Gitlab docker版本安装

docker 新建Gitlab容器并配置运行

下载离线镜像

在有网的电脑上拉取镜像

bash 复制代码
#在有网的电脑上拉取镜像
docker pull gitlab/gitlab-ce:19.2.0-ce.0
#打包成压缩包
docker save -o gitlab-ce-19.2.0.tar gitlab/gitlab-ce:19.2.0-ce.0
#压缩包传到另一台离线电脑,将其导入
docker load -i gitlab-ce-19.2.0.tar

创建镜像前准备

端口

Gitlab需要开放80、443、22端口

80:http默认管理页面

443:https默认管理页面端口

22 :使用ssh方式进行clone、push使用,如git@gitlab.example.com:group/repo.git走的端口

可以映射到7779端口

目录挂载

/etc/gitlab 配置文件(包含SSL证书)

/var/log/gitlab 日志文件

/var/opt/gitlab 数据持久化目录

统一挂载到/container_data/gitlab的config log data目录下

防火墙配置、创建挂载目录、初始化容器并挂载
bash 复制代码
#!/bin/bash
#宿主机放行防火墙端口
firewall-cmd --permanent --add-port=7777/tcp
firewall-cmd --permanent --add-port=7778/tcp
firewall-cmd --permanent --add-port=7779/tcp
firewall-cmd --reload
#验证
firewall-cmd --list-ports
#创建挂载目录
mkdir -p /container_data/gitlab/{config,logs,data}
#创建虚拟机
docker run -d \
  --name gitlab \
  --restart always \
  -p 80:80 \
  -p 443:443 \
  -p 7779:22 \
  -v /container_data/gitlab/config:/etc/gitlab \
  -v /container_data/gitlab/logs:/var/log/gitlab \
  -v /container_data/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:19.2.0-ce.0 

等待几分钟Gitlab初始化

获取初始root密码

可以进容器拿,也可以在挂载目录拿

bash 复制代码
#进容器
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
#从挂载目录
grep 'Password:' /container_data/gitlab/config/initial_root_password

启动后可以直接访问IP访问到管理界面,

但仓库内配置的默认地址依然为容器名,需要更改

需要进入配置文件配置Gitlab

配置Gitlab

配置通过HTTP、SSH访问

bash 复制代码
cat >> /container_data/gitlab/config/gitlab.rb <<'EOF'

#设置默认http管理端口(仓库配置页面显示的那个),可以写IP也可以写域名
#默认端口80,如果更改映射需要同步改如7777:7777,默认80:80
external_url 'http://10.12.3.161'
#默认为80不用配置,需要修改端口时配置
#nginx['listen_port'] = 80

#不写gitlab_ssh_host也可以,它会自动从external_url自动获取到IP地址和域名
#gitlab_rails['gitlab_ssh_host'] = '10.12.3.161'
#在物理机上需要同步改机器的ssh端口和gitlab的ssh端口,在容器中采用映射的方式7779:22
#这里的ssh port设置不是在容器内部改到7779,容器内部仍为22,但是仓库界面配置会显示7779
#实际访问使用7779访问
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'
EOF

#如果是在物理机部署需要reconfigure
#docker部署时直接重启容器也可以,进入容器recongigure也可以
#docker exec -it gitlab gitlab-ctl reconfigure

#修改配置后直接重启容器,它会自动重新配置
docker restart gitlab

此时Gitlab部署已经完成

测试
  1. 测试push代码是否成功
bash 复制代码
#在gitlab新建一个项目
ssh推送链接
ssh://git@10.12.3.161:7779/my_group1/my_project2.git

#测试ssh push代码
git init 
touch 1.txt
git add .
git commit -m "first commit"
git remote add origin ssh://git@10.12.3.161:7779/my_group1/my_project2.git
git push origin master

#测试http push212
git remote set-url origin http://10.12.3.161/my_group1/my_project2.git

git push origin master
#需要输入gitlab的账号密码
  1. 测试克隆代码是否成功
bash 复制代码
#ssh方式
git clone ssh://git@10.12.3.161:7779/my_group1/my_project2.git
#http方式
git clone http://10.12.3.161/my_group1/my_project2.git

可选

设置https

1.生成自签名SSL证书(仅测试用)

域名为测试域名gitlab.example.com

bash 复制代码
#证书放在容器的/etc/gitlab/ssl目录下,需要创建ssl文件夹
#映射过来是/container_data/gitlab/config/ssl
#1.创建目录存储,私钥和公钥分开,private下存放私钥,其他存放在公开
mkdir -p /container_data/gitlab/config/ssl/{private,certs}
#生成私钥(输出是nginx-selfsigned.key私钥文件)
openssl genpkey -algorithm RSA -out /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048
#生成CSR签名请求(输出是nginx-selfsigned.csr公钥)
openssl req -new -key /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -out /container_data/gitlab/config/ssl/certs/nginx-selfsigned.csr
#Common Name (eg, your name or your server's hostname) []写 gitlab.example.com,其他不填
#自签名生成证书(过期365天,输出是nginx-selfsigned.crt证书)
openssl x509 -req -days 365 -in /container_data/gitlab/config/ssl/certs/nginx-selfsigned.csr -signkey /container_data/gitlab/config/ssl/private/nginx-selfsigned.key -out /container_data/gitlab/config/ssl/certs/nginx-selfsigned.crt

key 放在private文件夹下,csr和crt放在certs文件夹下

2.更改Gitlab配置

https默认443端口

bash 复制代码
vim /container_data/gitlab/config/gitlab.rb
#改为从http改为https域名
external_url 'https://gitlab.example.com'
#如果前面external_url写了https,listen_https这里可以不写
nginx['listen_https'] = true
#80重定向到443打开
nginx['redirect_http_to_https'] = true
#指定crt和key的位置,注意是docker容器内的绝对路径
nginx['client_max_body_size'] = '2048m'
nginx['ssl_certificate'] = "/etc/gitlab/ssl/certs/nginx-selfsigned.crt"  
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private/nginx-selfsigned.key" 

#修改ssh端口(可选)
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'

https修改端口,443:443改为7778:7778

容器设置

bash 复制代码
#创建虚拟机
docker run -d \
  --name gitlab \
  --restart always \
  -p 80:80 \
  -p 7778:7778 \
  -p 7779:22 \
  -v /container_data/gitlab/config:/etc/gitlab \
  -v /container_data/gitlab/logs:/var/log/gitlab \
  -v /container_data/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:19.2.0-ce.0 

Gitlab设置

bash 复制代码
vim /container_data/gitlab/config/gitlab.rb
#改为从http改为https域名
external_url 'https://gitlab.example.com:7778'     
#如果前面external_url写了https,listen_https这里可以不写
nginx['listen_https'] = true
nginx['https_port'] = 7778
nginx['client_max_body_size'] = '2048m'
#80重定向到443打开
nginx['redirect_http_to_https'] = true
#指定crt和key的位置,注意是docker容器内的绝对路径
nginx['ssl_certificate'] = "/etc/gitlab/ssl/certs/nginx-selfsigned.crt"  
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private/nginx-selfsigned.key" 

#修改ssh端口(可选)
gitlab_rails['gitlab_shell_ssh_port'] = 7779
gitlab_rails['time_zone'] = 'Asia/Shanghai'

客户端配置host文件

bash 复制代码
windows
C:\Windows\System32\drivers\etc 下host文件
10.12.3.161 gitlab.example.com
相关推荐
pride.li4 小时前
Docker教程-Docker安装与镜像配置
运维·docker·容器
bgy66664 小时前
Docker Swarm 容器编排实战指南
运维·docker·容器
再卷还是菜5 小时前
Cephfs总结及kubernetes+Cephfs的整合项目
云原生·容器·kubernetes
力江6 小时前
GitLab 私有化部署实战 —— 从 Omnibus 到 Docker 的踩坑之旅
docker·容器·gitlab
深念Y6 小时前
Docker 镜像体积从 110MB 降到 13MB 后端服务的瘦身
运维·docker·容器
虎王物联7 小时前
Docker容器安全加固:securityContext与seccomp在IoT边缘节点的隔离实践
物联网·安全·docker
YIAN7 小时前
从 Docker 容器操作到 TS 高级类型:前端开发者必备的两套核心工具全解
后端·docker
杨浦老苏8 小时前
群晖 Docker 部署 LAN-Sheriff:实时监控局域网设备对外连接
网络安全·docker·监控·群晖·网络监控
是那盏灯塔8 小时前
Swarm集群
docker
秦jh_8 小时前
【Docker】镜像仓库
docker·容器