国内docker镜像安装gitlab 腾讯云cvm版

在腾讯云CVM上部署最新版GitLab 18

1. 背景

时间 :2025年11月17日
环境 :腾讯云CVM
核心问题

  • 直接拉取 gitlab/gitlab-ce:latest 失败,国外镜像访问困难
  • 网上很多所谓的"国内镜像"版本陈旧(甚至遇到9年前的版本伪装成latest)
  • 需要稳定、可靠的企业级代码托管和CI/CD平台

解决方案:发现腾讯云官方镜像仓库提供了同步更新的GitLab镜像

2. 安装过程记录

2.1 准备工作
bash 复制代码
# 创建目录结构
mkdir -p /home/docker/gitlab/{config,logs,data}
chmod 777 -R /home/docker/gitlab/*
2.2 拉取镜像
bash 复制代码
# 使用腾讯云官方镜像 18版本
docker pull mirror.ccs.tencentyun.com/gitlab/gitlab-ce:latest
2.3 启动容器-记得替换你的内网IP
bash 复制代码
docker run -d \
  --hostname 内网IP \
  -p 8008:80 -p 8443:443 -p 8222:22 \
  --name gitlab \
  --restart=always \
  -v /home/docker/gitlab/config:/etc/gitlab \
  -v /home/docker/gitlab/logs:/var/log/gitlab \
  -v /home/docker/gitlab/data:/var/opt/gitlab \
  --shm-size 256m \
  mirror.ccs.tencentyun.com/gitlab/gitlab-ce:latest
2.4 验证版本
bash 复制代码
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 输出:18.x.x (当前最新稳定版)

3. 初始配置

3.1 获取初始密码

由于新版本不再自动生成密码文件,需要通过控制台重置:

bash 复制代码
docker exec -it gitlab gitlab-rails console -e production

在控制台中执行-至少八位:

ruby 复制代码
user = User.find_by(username: 'root')
user.password = '你的安全密码'
user.password_confirmation = '你的安全密码'  
user.save!
exit
3.2 访问地址

4. 常用维护命令

bash 复制代码
# 服务管理
docker exec gitlab gitlab-ctl restart      # 重启服务
docker exec gitlab gitlab-ctl status       # 查看状态
docker exec gitlab gitlab-ctl reconfigure  # 重载配置

# 数据备份
docker exec gitlab gitlab-backup create    # 创建备份

# 日志查看
docker exec gitlab gitlab-ctl tail nginx   # Nginx日志
docker logs -f gitlab                      # 容器日志

5. 生产环境优劣势分析 容器化和linux本机部署

容器化:快速、隔离、易维护,适合大多数场景

Systemd:性能稍好,但运维复杂,升级困难

6. 修改 git clone端口号 (不修改的话 git clone 不会添加 IP:端口)

完整宿主机配置文件 (/home/docker/gitlab/config/gitlab.rb)

ruby 复制代码
# 基础配置
external_url 'http://你的内网IP:8008'
gitlab_rails['gitlab_ssh_host'] = '你的内网IP'
gitlab_rails['gitlab_shell_ssh_port'] = 8222

# 邮箱配置  这些不替换被报错的  可以先注释掉
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@yourcompany.com"
gitlab_rails['smtp_password'] = "your-password"
gitlab_rails['smtp_domain'] = "yourcompany.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

# 备份配置
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800

# 性能优化
puma['worker_processes'] = 2
sidekiq['max_concurrency'] = 10
nginx['worker_processes'] = 4

# 安全配置
gitlab_rails['gitlab_default_can_create_group'] = false
gitlab_rails['gitlab_username_changing_enabled'] = false

# 容器特定配置
nginx['listen_port'] = 80
nginx['listen_https'] = false

修改之后 备份配置 应用配置 重启容器

bash 复制代码
# 1. 备份原配置
cp /home/docker/gitlab/config/gitlab.rb /home/docker/gitlab/config/gitlab.rb.backup

# 2. 用上面的内容覆盖 /home/docker/gitlab/config/gitlab.rb

# 3. 应用配置
docker exec gitlab gitlab-ctl reconfigure

# 4. 重启服务
docker exec gitlab gitlab-ctl restart

优势:

  • 直接在宿主机编辑,更方便
  • 文件已通过卷映射,容器内实时同步
  • 避免进入容器的麻烦

GitLab 日常运维 备份迁移命令

可以设置定时任务 根据公司需要 这里不过多赘述

关于cronjob 参考另外博文:

https://blog.csdn.net/yuezhilangniao/article/details/105144082?spm=1011.2415.3001.5331

1. 备份命令
bash 复制代码
# 进入容器执行备份(生成带时间戳的备份文件)
docker exec gitlab gitlab-backup create

# 或者直接在宿主机执行
docker exec gitlab gitlab-backup create BACKUP=dump
2. 备份文件位置
bash 复制代码
# 备份文件在容器内路径
/var/opt/gitlab/backups/

# 对应宿主机路径
/home/docker/gitlab/data/backups/
3. 查看备份文件
bash 复制代码
ls -la /home/docker/gitlab/data/backups/
# 输出类似:1701234567_gitlab_backup.tar
4. 迁移恢复命令
bash 复制代码
# 将备份文件复制到新服务器后,在新GitLab容器中执行:
docker exec gitlab gitlab-backup restore BACKUP=备份文件名

# 示例(去掉时间戳和_gitlab_backup.tar):
docker exec gitlab gitlab-backup restore BACKUP=1701234567
5. 完整迁移流程
bash 复制代码
# 1. 原服务器备份
docker exec gitlab gitlab-backup create

# 2. 复制备份文件到新服务器
scp /home/docker/gitlab/data/backups/1701234567_gitlab_backup.tar user@新服务器:/home/docker/gitlab/data/backups/

# 3. 新服务器恢复
docker exec gitlab gitlab-backup restore BACKUP=1701234567

# 4. 重启服务
docker exec gitlab gitlab-ctl restart
6. 重要配置文件备份
bash 复制代码
# 备份关键配置文件
cp /home/docker/gitlab/config/gitlab.rb /home/docker/gitlab/config/gitlab.rb.backup
cp /home/docker/gitlab/config/gitlab-secrets.json /home/docker/gitlab/config/gitlab-secrets.json.backup

注意: 确保新旧服务器 GitLab 版本一致或新服务器版本更高。

相关推荐
梦想的颜色8 小时前
【Docker部署插件】:使用 Docker 部署生产级 Kafka 完整版教程
安全·docker·中间件·kafka·消息队列·docker-compose·后端开发
↘"LYong8 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
满意的星月10 小时前
基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
docker·微服务·架构
sukioe13 小时前
【无标题】
后端·docker·centos
HAPPY酷14 小时前
【ROS2】VMware + Docker 运行 Gazebo 崩溃与“假死”排查实录
qt·docker·容器
想你依然心痛18 小时前
嵌入式容器:Docker与BalenaOS在边缘设备上的实践——容器运行时与OTA
运维·docker·容器
不瘦80斤不改名18 小时前
HalfCart:基于LBS的1\.5km本地拼单系统全栈实践与踩坑复盘
python·docker·typescript·pycharm
Tronlong创龙1 天前
SBC-TL3588 单板机 / EPC-TL3588 工控机 Docker 开发手册(二)
docker·开发板·嵌入式开发·硬件开发·工业控制
腾讯云大数据1 天前
腾讯云大数据计算智能:从结构化 SQL 到多模态 AI Workload 的融合范式
大数据·人工智能·腾讯云
AI服务老曹1 天前
视觉算法模型管理完整流程:多版本上线、灰度发布与回滚的落地实践
人工智能·docker·音视频