当前位置: 首页 > news >正文

迁移docker部署的GitLab

目录

  • 1. 背景
  • 2. 参考
  • 3. 环境
  • 4. 过程
    • 4.1 查看原docker启动命令
    • 4.2 打包挂载目录传至新宿主机并创建对应目录
    • 4.3 保存镜像并传至新宿主机下
    • 4.4 新宿主机启动GitLab容器
  • 5 故障
    • 5.1 容器不断重启
    • 5.2 权限拒绝
    • 5.3 容器内错误日志
  • 6 重启容器服务正常
  • 7 总结

1. 背景

最近接到一个任务,迁移docker到另外一台宿主机上。在迁移过程中发现有docker部署的GitLab。迁移过程中各种排错,现将遇到的问题记录如下

2. 参考

链接: Gitblab docker迁移数据出现权限问题解决
链接: docker 的gitlab数据迁移权限问题
链接: docker中的gitlab数据迁移
链接: docker 版的 gitlab 数据迁移(单容器版) – 备份恢复方式
链接: docker下Gitlab如何进行备份恢复与迁移? – 备份恢复方式

3. 环境

  • 操作系统 Centos7
  • Docker version 26.0.0, build 2ae903e
  • GItLab镜像 twang2218/gitlab-ce-zh

4. 过程

4.1 查看原docker启动命令

docker run -d --name gitlab  \
--restart=always \
-p 8022:22 \
-p 80:80 \
-p 8443:443 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh
  • 端口映射
    • 8022:22
    • 80:80
    • 8443:443
  • 挂载目录
    • /home/gitlab/etc:/etc/gitlab
    • /home/gitlab/etc:/etc/gitlab
    • /home/gitlab/data:/var/opt/gitlab

4.2 打包挂载目录传至新宿主机并创建对应目录

  • 源挂载目录迁移至新宿主机对应路径下
// 查看新宿主机对应路径
tree -L 1 /home/gitlab
/home/gitlab
├── data
├── docker-compose-gitlab.yml
├── etc
└── log

4.3 保存镜像并传至新宿主机下

  • 保存源宿主机下镜像twang2218/gitlab-ce-zh
docker save twang2218/gitlab-ce-zh > gitlab-ce-zh.tar
  • 在新宿主机下还原镜像
docker load < gitlab-ce-zh.tar
  • 新宿主机查看镜像
docker image ls twang2218/gitlab-ce-zh
// 显示结果
REPOSITORY               TAG       IMAGE ID       CREATED       SIZE
twang2218/gitlab-ce-zh   latest    18da462b5ff5   5 years ago   1.61GB

4.4 新宿主机启动GitLab容器

  • 使用同样命令容器
docker run -d --name gitlab  \
--restart=always \
-p 8022:22 \
-p 80:80 \
-p 8443:443 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh

5 故障

5.1 容器不断重启

  • 现象:容器不断重启,GitLab服务无法正常运行。
  • 定位:查看容器日志
Preparing services...
Starting services...
/opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted
/opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system
Configuring GitLab package...
Configuring GitLab...================================================================================
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
================================================================================
  • 参考:Gitblab docker迁移数据出现权限问题解决
  • 解决:修改对应宿主机路径权限
chmod 2770 /home/gitlab/data/git-data/repositories

5.2 权限拒绝

  • 现象:GitLab服务无法正常运行。
  • 定位:查看容器日志
================================================================================Error executing action `run` on resource 'execute[/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions]'================================================================================Mixlib::ShellOut::ShellCommandFailed------------------------------------Expected process to exit with [0], but received '1'---- Begin output of /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions ----STDOUT: error: could not open /var/opt/gitlab/.ssh/authorized_keys: Permission denied @ rb_sysopen - /var/opt/gitlab/.ssh/authorized_keys-rw-------. 1 root root 8474 Apr 11 22:27 /var/opt/gitlab/.ssh/authorized_keysSTDERR: ---- End output of /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions ----Ran /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions returned 1
  • 参考:Gitblab docker迁移数据出现权限问题解决
  • 解决:不断执行 docker exec -it gitlab update-permissions
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.mdIf this container fails to start due to permission problems try to fix it by executing:docker exec -it gitlab update-permissionsdocker restart gitlab
  • 注意执行过程中可能爆缺失文件错误,例如: /var/opt/gitlab/gitlab-rails/shared/registry需要手动创建后,继续执行docker exec -it gitlab update-permissions,直至全部执行成功且无报错。
mkdir /home/gitlab/data/gitlab-rails/shared/registry

5.3 容器内错误日志

  • 现象:使用交互模式启动容器排错。
    • 先停止并删除之前容器,然后使用以下命令(-i)启动容器查看错误日志
docker run -i --name gitlab  \
--restart=always \
-p 8022:22 \
-p 80:80 \
-p 8443:443 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh
  • 定位:查看日志
    2024-04-12_06:53:51.49881 level=error ts=2024-04-12T06:53:51.498534519Z caller=main.go:226 err=“open /var/opt/gitlab/alertmanager/data/nflog: permission denied”

  • 原因

  1. 进入容器内查看 /var/opt/gitlab/alertmanager/,该目录的用户和组是git
root@14dd4de37cbf:/var/opt/gitlab/alertmanager# ll
total 8
drwxr-x---.  3 gitlab-prometheus root   42 Apr 12 13:36 ./
drwxr-xr-x. 20 root              root 4096 Apr 12 13:36 ../
-rw-r--r--.  1 gitlab-prometheus root  283 Apr 12 10:16 alertmanager.yml
drwx------.  2 git               git    35 Apr 12 10:16 data/
  1. 实际上应该属于gitlab-prometheus
git:x:998:998::/var/opt/gitlab:/bin/sh
gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false
gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh
mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh
registry:x:993:993::/var/opt/gitlab/registry:/bin/sh
gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh
gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh
  • 解决
    在容器内修改目录用户和组,
root@14dd4de37cbf:/var/opt/gitlab/alertmanager# chown -R gitlab-prometheus.gitlab-prometheus data/

6 重启容器服务正常

  • 关闭并删除之前容器
  • 使用正常启动命令重新启动容器
docker run -d --name gitlab  \
--restart=always \
-p 8022:22 \
-p 80:80 \
-p 8443:443 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh
  • GitLab服务访问正常
    在这里插入图片描述

7 总结

GitLab docker迁移工作并不复杂,主要麻烦在GitLab本身的权限上。迁移可通过容器启动日志和容器内交互方式排除故障。

相关文章:

迁移docker部署的GitLab

目录 1. 背景2. 参考3. 环境4. 过程4.1 查看原docker启动命令4.2 打包挂载目录传至新宿主机并创建对应目录4.3 保存镜像并传至新宿主机下4.4 新宿主机启动GitLab容器 5 故障5.1 容器不断重启5.2 权限拒绝5.3 容器内错误日志 6 重启容器服务正常7 总结 1. 背景 最近接到一个任务…...

今年消费新潮流:零元购商业模式

今天给大家推荐一种极具创新的电子商务模式&#xff1a;零元购商业模式 这个模式支持消费者以零成本或极低成本购买商品。这种模式主要通过返现、积分、优惠券等方式来减少支付金额&#xff0c;使消费者实现“零成本”购物的目标。 人民网在去年发表了一篇文章。 总结了一下&a…...

Go导入私有仓库

使用go.mod依赖第三方库时&#xff0c;有以下要求&#xff1a; 代码仓库托管于VCS(版本控制系统)&#xff1b;代码仓库是公开的&#xff1b;仓库地址使用域名访问&#xff1b;仓库域名支持HTTPS访问。 对于自己或者公司内部搭建的私有git&#xff0c;这些条件是比较难同时满足…...

GIS GeoJSON数据获取

1、工具地址 DataV.GeoAtlas地理小工具系列 2、界面预览...

书生·浦语大模型实战营 | 第3次学习笔记

前言 书生浦语大模型应用实战营 第二期正在开营&#xff0c;欢迎大家来学习。&#xff08;参与链接&#xff1a;https://mp.weixin.qq.com/s/YYSr3re6IduLJCAh-jgZqg 第三堂课的视频链接&#xff1a;https://www.bilibili.com/video/BV1QA4m1F7t4/ 本次笔记是学习完第三堂课…...

easyExcel - 按模板导出

目录 前言一、情景介绍二、文档介绍2.1 读取模板2.2 填充模板 三、代码示例3.1 案例一&#xff1a;工资表3.2 案例二&#xff1a;报价单 四、我所遇到的问题 前言 Java-easyExcel入门教程&#xff1a;https://blog.csdn.net/xhmico/article/details/134714025 之前有介绍过如…...

使用 Tranformer 进行概率时间序列预测实战

使用 Transformers 进行概率时间序列预测实战 通常&#xff0c;经典方法针对数据集中的每个时间序列单独拟合。然而&#xff0c;当处理大量时间序列时&#xff0c;在所有可用时间序列上训练一个“全局”模型是有益的&#xff0c;这使模型能够从许多不同的来源学习潜在的表示。…...

LLM大语言模型助力DataEase小助手,新增气泡地图,DataEase开源数据可视化分析平台v2.5.0发布

2024年4月8日&#xff0c;DataEase开源数据可视化分析平台正式发布v2.5.0版本。 这一版本的功能升级包括&#xff1a;新增DataEase小助手支持&#xff0c;通过结合智能算法和LLM&#xff08;即Large Language Model&#xff0c;大语言模型&#xff09;能力&#xff0c;DataEas…...

维修伊顿触摸屏不显示工业电脑人机界面EATON XVS-430-10MPI-1-10 深圳捷达工控维修

人机界面 (HMI) XP500 工业 PC 系列 以不同的方式思考工业平板电脑 对于严酷、高要求的应用&#xff0c;工业平板电脑设定了可配置性和稳健性的标准。伊顿的 XP500 系列工业平板电脑凭借防刮钢化玻璃屏幕、铸铝外壳和无风扇设计满足了这些需求。这些功能使 XP500 HMI成为一款节…...

趣话最大割问题:花果山之群猴博弈

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨浪味仙 排版丨 沛贤 深度好文&#xff1a;3000字丨15分钟阅读 趋利避害&#xff0c;是所有生物遵循的自然法则&#xff0c;人类也不例外。 举个例子&#xff0c;假如你是某生鲜平台的配…...

上周面试了一个大模型算法岗的女生,有点崩溃。。。

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…...

AI系列:大语言模型的function calling

目录 大语言模型(LLM) 的function calling实验&#xff1a;OpenAI之function calling序列图&#xff1a;function calling如何工作详情: 对话内容参考代码 后续: 使用LangChain实现function calling参考 大语言模型(LLM) 的function calling 大语言模型(LLM)可以使用自然语言与…...

conda 创建、激活、退出、删除虚拟环境

一、conda 本地环境常用操作 #获取版本号 conda --version 或 conda -V #检查更新当前conda conda update conda #查看当前存在哪些虚拟环境 conda env list 或 conda info -e #查看--安装--更新--删除包 conda list&#xff1a; conda search package_name# 查询包 cond…...

【Entity Framework】聊一聊EF中继承关系

【Entity Framework】聊一聊EF中继承关系 文章目录 【Entity Framework】聊一聊EF中继承关系一、概述二、实体类型层次结构映射三、每个层次结构一张表和鉴别器配置四、共享列五、每个类型一张表配置六、每个具体类型一张表配置七、TPC数据库架构八、总结 一、概述 Entity Fra…...

curaengine编译源码之libarcus编译记录

libArcus的编译&#xff08;成功安装&#xff09; This library contains C code and Python3 bindings for creating a socket in a thread and using this socket to send and receive messages based on the Protocol Buffers library. It is designed to facilitate the c…...

运用OSI模型提升排错能力

1. OSI模型有什么实际的应用价值&#xff1f; 2. 二层和三层网络的区别和应用&#xff1b; 3. 如何通过OSI模型提升组网排错能力&#xff1f; -- OSI - 开放式系统互联 - 一个互联标准 - 从软件和硬件 定义标准 - 不同厂商的设备 研发的技术 - 具备兼容性 -- O…...

【Node.js】Express学习笔记(黑马)

目录 初识 ExpressExpress 简介Express 的基本使用托管静态资源nodemon Express 路由路由的概念路由的使用 Express 中间件中间件的概念Express 中间件的初体验中间件的分类 初识 Express Express 简介 什么是 Express&#xff1f; 官方给出的概念&#xff1a;Express 是基于…...

Linux系统部署Tale个人博客并发布到公网访问

目录 ⛳️推荐 前言 1. Tale网站搭建 1.1 检查本地环境 1.2 部署Tale个人博客系统 1.3 启动Tale服务 1.4 访问博客地址 2. Linux安装Cpolar内网穿透 3. 创建Tale博客公网地址 4. 使用公网地址访问Tale ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通…...

CentOS7里ifcfg-eth0文件不存在解决方案/Centos7修改网络IP解决方案

Centos7网络IP地址手动设置 1、centos7没有ifcfg-eth0&#xff0c;我的centos7也没有其他博客说的什么ifcfg-ens33、ifcfg-ens32&#xff0c;然后我打开了我这里的ifcfg-eno***&#xff0c;结果发现就是centos6里的ifcfg-eth0里的网络配置。2、vim ifcfg-eno***&#xff08;按t…...

go第三方库go.uber.org介绍

Uber 是一家美国硅谷的科技公司&#xff0c;也是 Go 语言的早期 adopter。其开源了很多 golang 项目&#xff0c;诸如被 Gopher 圈熟知的 zap、jaeger 等。2018 年年末 Uber 将内部的 Go 风格规范 开源到 GitHub&#xff0c;经过一年的积累和更新&#xff0c;该规范已经初具规模…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...