下面是 GitLab 17.11(CE 版) 的完整 Docker 安装步骤,适用于 Linux 系统(包括 ARM64 架构)。将包含 启动命令、端口映射、数据卷挂载、外部访问配置等完整说明。
一、前提条件
-
安装好 Docker(推荐版本 ≥ 20.10)
-
可用磁盘空间 ≥ 10GB(建议 30GB+)
-
主机名解析正确(推荐设置 hosts 或 DNS)
-
系统架构支持 ARM64 或 x86_64
二、拉取镜像
这个镜像有时由于众所周知的原因无法pull,可以采用一个迂回的方案。
1、在可以访问到registry-1.docker.io/v2/仓库的机器上,先pull下来
docker pull gitlab/gitlab-ce:17.11.1-ce.0
2、在本给tag打标签
docker tag gitlab/gitlab-ce:17.11.1-ce.0 private-ser-240.local:5001/talman/gitlab/gitlab-ce:17.11.1-ce.0
3、登录doce,push镜像
docker login -u admin private-ser-240.local:5001
docker push private-ser-240.local:5001/talman/gitlab/gitlab-ce:17.11.1-ce.0
The push refers to repository [private-ser-240.local:5001/talman/gitlab/gitlab-ce]
8003a5b55e49: Pushed
272aaa3e7500: Pushed
08bae8e67056: Pushed
93d70cedc33c: Pushed
f263caa35a8d: Pushed
fd8aee88589b: Pushed
32007e0da359: Pushed
e38045bbc8b4: Pushed
65c636ce09f2: Pushed
17.11.1-ce.0: digest: sha256:61b3d9b3721d1020474c5a3bada39964671bc0007bf592a2d490356170ccb94d size: 2201
4、在nexus上查看镜像
此镜像为官方 社区版(CE),支持多架构自动适配(如 ARM64)。
三、关于如何使用nexus构建docker私服
请参见:文档创建中
四、启动命令(推荐使用端口号 + 主机名方式)
sudo docker run --detach \
--hostname private-ser-240.local \
--publish 7443:443 \
--publish 7080:80 \
--publish 2222:22 \
--name gitlab \
--restart always \
--volume $HOME/gitlab/config:/etc/gitlab \
--volume $HOME/gitlab/logs:/var/log/gitlab \
--volume $HOME/gitlab/data:/var/opt/gitlab \
talman/gitlab/gitlab-ce:17.11.1-ce.0
参数说明:
参数 | 说明 |
---|---|
--hostname | GitLab 服务的主机名(用于生成 clone URL / 登录地址等) |
--publish | 宿主机端口与容器端口映射 |
--volume | 数据持久化路径,分别保存配置、日志、数据 |
--restart always | 开机自启动 GitLab 容器 |
--name gitlab | 容器名,方便管理 |
五、数据目录结构说明(宿主机)
目录 | 作用 |
---|---|
$HOME/gitlab/config | 配置文件,如 gitlab.rb |
$HOME/gitlab/logs | 应用日志 |
$HOME/gitlab/data | 仓库数据、数据库、Redis 等 |
六、访问地址
根据前面的端口映射,你可以通过以下方式访问 GitLab:
-
HTTP: http://<你的主机 IP[或主机名]>:7080
-
HTTPS: https://<你的主机 IP[或主机名]>:7443
-
SSH Git: git@<你的主机 IP[或主机名]> -p 2222
如果你配置了主机名如 [或主机名],建议添加本地解析:
sudo echo "192.168.x.x private-ser-240.local" >> /etc/hosts
七、初始化配置
首次访问 GitLab,会提示设置管理员密码:
-
访问:http://<IP[或主机名]>:7080
-
设置 root 密码
-
使用 root + 你设置的密码 登录
-
创建项目、用户、组、配置 CI/CD
八、常用管理命令
docker exec -it gitlab gitlab-ctl reconfigure # 应用配置
docker exec -it gitlab gitlab-ctl restart # 重启服务
docker exec -it gitlab gitlab-rake gitlab:check # 检查状态
九、关闭 HTTPS(如你只打算走 HTTP)
编辑 $HOME/gitlab/config/gitlab.rb:
external_url 'http://private-ser-240.local:7080'
nginx['redirect_http_to_https'] = false
然后执行:
docker exec -it gitlab gitlab-ctl reconfigure
十、GitLab 17.11 中常见配置项含义(写在gitlab.rb文件中)
10.1 external_url
-
作用:定义 GitLab 对外暴露的 URL,包括页面跳转、克隆地址、邮件链接等;
-
必须配置;
-
适用于 HTTP/HTTPS;
-
Docker 启动时也可以用环境变量指定:GITLAB_OMNIBUS_CONFIG="external_url='...'"
-
示例:
external_url 'http://192.168.3.240:7080'
10.2 nginx['redirect_http_to_https']
作用:
-
是否强制将 HTTP 请求重定向到 HTTPS;
-
如果你只是测试用,没配置 HTTPS(SSL 证书),应设为 false;
-
如果你使用了 Let’s Encrypt 或自签名证书,并启用了 HTTPS,可以设为 true。
nginx['redirect_http_to_https'] = false
10.3 gitlab_rails['gitlab_shell_ssh_port']
gitlab_rails['gitlab_shell_ssh_port'] = 2222
作用:
-
如果你映射了非 22 的 SSH 端口(如 --publish 2222:22),则必须告诉 GitLab 使用哪个端口;
-
否则 GitLab 会误以为 SSH Git clone 使用的是默认端口 22。
10.4 puma['worker_processes'] = 2
-
作用:设置 GitLab Web 服务(Puma)使用的进程数量;
-
这些配置在旧版(如 15.x)中用于控制 GitLab Web 服务监听端口;
-
17.11 起默认由 Puma 处理,但一般不需要手动改 unless 多实例场景。
-
影响请求并发处理能力;
-
默认是 0(表示自动判断);
-
如果服务器有 ≥ 2 核 CPU,设置为 2 是合理的;
-
注意不要设置太高,否则内存/线程竞争。
10.5 gitlab_rails['time_zone'] = 'Asia/Shanghai'
-
作用:设置 GitLab Web 界面显示时间的时区;
-
默认是 UTC,设置为 Asia/Shanghai 可显示北京时间;
-
推荐设置,尤其是国内部署。
10.6 sidekiq['max_concurrency'] = 16
-
作用:控制后台任务处理进程 Sidekiq 的并发线程数;
-
Sidekiq 处理如邮件、CI/CD 执行、项目导入、缓存清理等任务;
-
默认值通常为 25;
-
设置为 8 意味着最多并发 8 个任务线程,适合资源有限的环境;
-
可根据服务器内存和 CPU 增减,推荐范围:4 ~ 20。
10.7 postgresql['shared_buffers'] = "512MB"
-
作用:PostgreSQL 内存中用于缓存数据页的缓冲区大小;
-
默认约为系统内存的 25%;
-
128MB 适合 1~2GB 内存的小型服务器;
-
如服务器内存 ≥ 4GB,建议设为 512MB ~ 1GB。
10.8 postgresql['max_worker_processes'] = 8
-
作用:PostgreSQL 可用于并行查询和后台任务的最大工作进程数量;
-
默认值:8;
-
你设置为 4,适合中小型实例,避免资源过度使用;
-
对 CI/CD 中执行 SQL 查询等会有轻微影响。
10.9 prometheus_monitoring['enable'] = false
-
作用:是否启用 GitLab 自带的 Prometheus 监控服务;
-
默认是启用的;
-
如果你不打算使用 GitLab 监控功能(包括性能图、度量指标等),可以关闭以节省资源;
-
推荐在资源紧张时关闭。
10.10 sidekiq['concurrency'] = 8
-
含义:最多同时处理 8 个后台任务;
-
默认值是 25;
-
在资源有限的服务器(如 ARM 主机、低配 VPS)上推荐调低;
-
设置为 8 是比较温和的选择,兼顾并发与资源占用;
-
如果你服务器内存 < 4GB,建议设为 4 或更小。
配置建议总结(是否建议保留)
配置项 | GitLab 17.11 是否仍适用 | 建议情况 |
---|---|---|
external_url | ✅ 必须 | 必须配置 |
gitlab_rails['time_zone'] | ✅ 有效 | ✅ 强烈建议设置 |
puma['worker_processes'] | ✅ 有效 | ✅ 可调节性能 |
sidekiq['max_concurrency'] | ✅ 有效 | ✅ 可根据资源调节 |
postgresql['shared_buffers'] | ✅ 有效 | ✅ 建议自定义 |
postgresql['max_worker_processes'] | ✅ 有效 | ✅ 建议保守设定 |
prometheus_monitoring['enable'] | ✅ 有效 | ✅ 可关闭节省资源 |
示例配置片段(适用于 GitLab 17.11)
external_url 'http://private-ser-240.local'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 16
postgresql['shared_buffers'] = "512MB"
postgresql['max_worker_processes'] = 8
sidekiq['concurrency'] = 8
prometheus_monitoring['enable'] = false
十一 让修改后的配置生效
docker exec -it gitlab gitlab-ctl reconfigure
十二 root账户以及密码
gitlab会自动创建一个管理员账户,root
密码在:cat /root/gitlab/config/initial_root_password
十三 基础设置
重置密码
登录后修改默认密码 > 左上角头像 > Perferences > Password
取消头像外部加载
修改系统配置:首页正中心,Configure GitLab Settings > General > Account and limit > 取消 Gravatar enabled > Save changes
关闭用户注册功能
首页正中心,Configure GitLab
Settings > General > Sign-up restrictions > 取消 Sign-up enabled > Save changes
开启 webhook 外部访问
首页正中心,Configure GitLab Settings > Network > Outbound requests > Allow requests to the local network from web hooks and services 勾选
设置语言为中文(全局)
首页正中心,Configure GitLab Settings > Preferences > Localization > Default language > 选择简体中文 > Save changes
设置当前用户语言为中文
左上角用户头像 > Preferences > Localization > Language > 选择简体中文 > Save changes