迁移docker部署的gitlab过程(经实战)

 更新时间:2026年05月22日 09:01:25   作者:dayfoxman  
本文详细描述了如何将Docker部署的GitLab数据迁移到另一块硬盘的过程,包括包括停止容器、迁移数据卷、修改挂载路径、修正权限和重启容器等等每一步骤都有详细的说明确保迁移过程的安全性和有效性

很多时候为了节省硬盘或者扩容硬盘,需要将 Docker 部署的 GitLab 数据迁移到另一块硬盘,核心在于停止容器 -> 迁移数据卷 -> 修改挂载路径 -> 修正权限 -> 重启容器

重要提示

  1. 操作前务必备份:防止迁移过程中数据损坏。
  2. 权限问题:GitLab 对文件权限非常敏感,迁移后必须修正所有者权限(通常为 998:998)。
  3. 停机时间:迁移期间 GitLab 无法访问,请选择业务低峰期操作。

第一步:准备工作

确认新硬盘挂载点 假设新硬盘已挂载到 /mnt/new_disk,你计划将数据存放在 /mnt/new_disk/gitlab

df -h  # 确认新硬盘挂载点
mkdir -p /mnt/new_disk/gitlab/{config,logs,data}

确认当前 GitLab 容器信息 查看当前容器的挂载路径(以便确认源数据位置):

docker inspect gitlab | grep Mounts -A 20
# 或者如果是 docker-compose
docker-compose ps

第二步:停止 GitLab 服务

为了保证数据一致性,必须停止容器。

# 如果是 docker-compose 部署
cd /path/to/your/gitlab-compose
docker-compose down

# 如果是 docker run 部署
docker stop gitlab
docker rm gitlab  # 迁移通常建议删除旧容器重新创建,数据在卷里不会丢

第三步:迁移数据

使用 rsync 迁移数据,它能保留文件权限、软链接和时间戳,比 cp 更安全。

# 语法:rsync -av [源路径/] [目标路径/]
# 注意:源路径末尾加 / 表示复制目录内容,不加表示复制目录本身

sudo rsync -av /opt/gitlab/config/ /mnt/new_disk/gitlab/config/
sudo rsync -av /opt/gitlab/logs/ /mnt/new_disk/gitlab/logs/
sudo rsync -av /opt/gitlab/data/ /mnt/new_disk/gitlab/data/

第四步:修改配置文件

你需要告诉 Docker 新的数据路径在哪里。

情况 A:使用 docker-compose.yml (推荐)

编辑 docker-compose.yml 文件,修改 volumes 部分:

version: '3'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    # ... 其他配置 ...
    volumes:
      # 修改为新的硬盘路径
      - '/mnt/new_disk/gitlab/config:/etc/gitlab'
      - '/mnt/new_disk/gitlab/logs:/var/log/gitlab'
      - '/mnt/new_disk/gitlab/data:/var/opt/gitlab'

情况 B:使用 docker run 命令

在重新运行容器时,修改 -v 参数:

docker run -d \
    --hostname gitlab.example.com \
    -p 443:443 -p 80:80 -p 2222:22 \
    --name gitlab \
    --restart always \
    # 下面三行修改为新路径
    -v /mnt/new_disk/gitlab/config:/etc/gitlab \
    -v /mnt/new_disk/gitlab/logs:/var/log/gitlab \
    -v /mnt/new_disk/gitlab//var/opt/gitlab \
    gitlab/gitlab-ce:latest

第五步:修正文件权限 (关键步骤)

GitLab 的 Docker 镜像内部通常使用用户 ID 998 运行。如果新硬盘的文件所有者不是 998,GitLab 将无法启动或报错 Permission denied。

# 将新目录的所有者递归修改为 998:998
sudo chown -R 998:998 /mnt/new_disk/gitlab/

# 确保目录权限正确
sudo chmod -R 755 /mnt/new_disk/gitlab/

第六步:启动并验证

启动容器

# docker-compose
docker-compose up -d

# docker run
# (执行上面的 docker run 命令)

观察日志

查看启动日志,确保没有 Permission denied 错误:

docker logs -f gitlab

当看到 gitlab Reconfigured. 或 ok: run: gitlab-workhorse: (pid ...) 等字样,说明启动成功。

  • 访问验证
  • 打开浏览器访问 GitLab 地址。
  • 尝试登录、查看项目、提交代码。
  • 检查后台设置中的存储路径是否正常。

第七步:清理旧数据 (确认无误后)

运行稳定 1-2 天确认无误后,再删除旧数据释放空间:

# 备份旧数据以防万一
mv /opt/gitlab /opt/gitlab.bak

# 确认一切正常后再删除
# rm -rf /opt/gitlab.bak

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker搭建zookeeper集群和kafka集群并使用Java测试详解

    docker搭建zookeeper集群和kafka集群并使用Java测试详解

    本文详细介绍了如何在Linux虚拟机中使用Docker搭建Kafka集群环境,并通过Kafka-Manager进行可视化管理,文章包括了从镜像拉取、容器网络设置、Zookeeper和Kafka集群搭建到测试和使用Java连接集群的全过程
    2026-01-01
  • docker进行本地部署的实现示例

    docker进行本地部署的实现示例

    本文主要介绍了docker进行本地部署的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-09-09
  • Linux Docker安装wordpress的方法详解教程

    Linux Docker安装wordpress的方法详解教程

    这篇文章主要介绍了Linux Docker安装wordpress的方法详解教程的相关资料,需要的朋友可以参考下
    2016-10-10
  • Docker部署Microsoft Sql Server详细步骤

    Docker部署Microsoft Sql Server详细步骤

    大家好,本篇文章主要讲的是Docker部署Microsoft Sql Server详细步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 清理docker容器里的nacos日志方式

    清理docker容器里的nacos日志方式

    文章提供了一个用于清理Docker容器中Nacos日志的脚本,并建议将其设置为每天计划任务,作者分享个人经验,希望对大家有所帮助
    2026-01-01
  • docker如何打包前端并运行完整步骤详解

    docker如何打包前端并运行完整步骤详解

    这篇文章主要介绍了使用Vue3和Vite1开发前端项目的过程,包括项目启动、开发服务器运行、构建生产环境以及使用Docker部署,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • docker logs-查看docker容器日志的实现

    docker logs-查看docker容器日志的实现

    这篇文章主要介绍了docker logs-查看docker容器日志的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 详解基于Harbor搭建Docker私有镜像仓库

    详解基于Harbor搭建Docker私有镜像仓库

    这篇文章主要介绍了详解基于Harbor搭建Docker私有镜像仓库,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Docker中安装宝塔的详细教程

    Docker中安装宝塔的详细教程

    这篇文章主要介绍了Docker中安装宝塔的详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Docker网络之单host网络及使用案例

    Docker网络之单host网络及使用案例

    本文重点给大家讲解Docker单主机网络的相关知识及使用案例,重点是使用案例,感兴趣的朋友一起看看吧
    2017-08-08

最新评论