gitlab-jh的docker容器自动退出/gitlab镜像版本/升级问题

背景

上个月用docker部署了一个gitlab-jh的服务,给小组上传代码使用,这个月由于机器故障重装系统,当我重新部署好gitlab后发现docker容器启动后会闪退,为寻因果,故作此篇

  • docker-compose.yml 文件
version: '3.6'
services:web:image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'#容器退出后会自动重启restart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://10.20.18.181:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224ports:# 宿主机与容器内端口映射- '8929:8929'- '2224:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'shm_size: '256m'
  • install_gitlab.sh 脚本
#! /bin/bash
export GITLAB_HOME=/archive/.gitlab
docker compose up -d

原因分析

  • 启动容器后,容器闪退
# ./install_gitlab.sh
[+] Running 1/1✔ Container gitlab-web-1  Started                                                       0.5s 
# docker ps
CONTAINER ID   IMAGE                                         COMMAND             CREATED      STATUS                            PORTSNAMES
e307aa90d5dd   registry.gitlab.cn/omnibus/gitlab-jh:latest   "/assets/wrapper"   3 seconds ago   Up 2 seconds (health: starting)   80/tcp, 443/tcp, 0.0.0.0:8929->8929/tcp, :::8929->8929/tcp, 0.0.0.0:2224->22/tcp, :::2224->22/tcp   gitlab-web-1
# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • 查看日志
    日志显示目前gitlab-jh版本是17.0.1,最后一行又显示我正从16.10.3升级到17.0.1
# docker logs e30
Thank you for using GitLab Docker Image!
Current version: gitlab-jh=17.0.1-jh.0Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
And restart this container to reload settings.
To do it use docker exec:docker exec -it gitlab editor /etc/gitlab/gitlab.rbdocker restart gitlabFor 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 gitlabCleaning stale PIDs & sockets
It seems you are upgrading from 16.10.3-jh to 17.0.1.
It is required to upgrade to the latest 16.11.x version first before proceeding.
Please follow the upgrade documentation at https://docs.gitlab.com/ee/update/index.html#upgrading-to-a-new-major-version
  • 在其他目录重新部署gitlab,发现服务正常运行,初步判断是宿主机映射目录的问题
# ls
config  data  logs
  • 对目录分析,最终查看到是data中版本与镜像版本不匹配
    data目录中子目录对应的版本号都是16.x
# find . -name "*VERSION*"
./gitaly/VERSION
./gitlab-workhorse/VERSION
./gitlab-kas/VERSION
./postgresql/data/PG_VERSION
./postgresql/data/base/12974/PG_VERSION
./postgresql/data/base/16386/PG_VERSION
./postgresql/data/base/1/PG_VERSION
./postgresql/data/base/12973/PG_VERSION
./postgresql/VERSION
./nginx/VERSION
./gitlab-exporter/RUBY_VERSION
./gitlab-rails/RUBY_VERSION
./gitlab-rails/VERSION# cat gitlab-workhorse/VERSION
gitlab-workhorse (v16.10.3-jh)-(20240417.013513)a# cat gitlab-rails/VERSION
16.10.3-jh# cat gitlab-kas/VERSION
kas version v16.10.1, commit: 8892127a, built: 20240417.013045

原因总结

日志显示目前gitlab-jh版本是17.0.1,最后一行又显示我正从16.10.3升级到17.0.1
data目录中子目录对应的版本号都是16.x
镜像设置为latest,故每次部署时,默认拉最新镜像,但是我的data数据是旧版本的数据
根据背景、日志以及data目录中的版本号可以判定是数据的版本和镜像的版本不匹配导致

解决方案

重新将镜像的版本恢复到16.10.3,修改docker-compose.yml 文件的image字段,将镜像tag从latest改为16.10.3,后续再正常升级即可

# cat docker-compose.yml 
version: '3.6'
services:web:#image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'image: 'registry.gitlab.cn/omnibus/gitlab-jh:16.10.3'restart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |# 容器内端口改为8929external_url 'http://10.20.18.181:8929'# (可能也可不配置?)增加gitlab shell端口号,22和2224都可以使用 gitlab_rails['gitlab_shell_ssh_port'] = 2224ports:# 宿主机与容器内端口映射- '8929:8929'- '2224:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'shm_size: '256m'

参考

  1. 极狐GitLab Docker 镜像
  2. 使用 Docker compose 升级极狐GitLab

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于R语言BIOMOD2 及机器学习方法的物种分布模拟

BIOMOD2是一个R软件包,用于构建和评估物种分布模型(SDMs)。它集成了多种统计和机器学习方法,如GLM、GAM、SVM等,允许用户预测和分析物种在不同环境条件下的地理分布。通过这种方式,BIOMOD帮助研究者评估气候…

AWS EMR Serverless

AWS概述 EMR Serverless 简介 在AWS概述一文中简单介绍过AWS EMR, 它是AWS提供的云端大数据平台。借助EMR可以设置集群以便在几分钟内使用大数据框架处理和分析数据。创建集群可参考官方文档:Amazon EMR 入门。但集群创建之后需要一直运行,用户需要管理…

Java:数组

文章目录 一、数组的介绍二、数组的定义2.1 静态初始化2.2 动态初始化 三、常见操作3.1 访问数据3.2 修改数据3.3 常见问题 四、数组内存图(难点)4.1 前置知识4.2 执行流程 五、结语 一、数组的介绍 Java中的数组是一种基本的数据结构,它能够…

Nginx+Tomcat负载均衡、动静分离集群

目录 1.Nginx负载均衡 1.1 负载均衡概念 1.2 负载均衡原理 1.3 Nginx配置反向代理 1.3.1 反向代理概念 1.3.2 反向代理主要参数 2.Nginx动静分离 2.1 动静分离的概念 2.2 Nginx 静态处理优势 2.3 动静分离原理 3. NginxTomcat动静分离的实验设计 3.1 准备三台虚拟机…

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

Typora编辑的markdown文档莫名其妙消失或未保存--解决方案【亲测可行】

由于误触键盘导致文件关闭&#xff0c;打开文件之后发现里面文字全没了~气死了&#xff01;&#xff01;&#xff01;&#xff01; 可以通过如下方法解决&#xff01; 一、打开typora 二、【文件】-【偏好设置】 三、点击恢复未保存的草稿&#xff0c;找到最近的文件复制粘贴…

django 内置 JSON 字段 使用场景

Django 内置的 JSON 字段&#xff08;JSONField&#xff09;是在 Django 3.1 版本中引入的&#xff0c;用于处理 JSON 格式的数据。JSONField 允许在数据库表中存储和查询 JSON 数据&#xff0c;并且在与 Python 代码交互时自动转换为合适的 Python 数据类型。以下是一些常见的…

nignx简易安装脚本

yum -y install gcc gcc-c pcre pcre-devel gd-devel openssl openssl-devel zlib zlib-devel id nginx || useradd nginx wget http://nginx.org/download/nginx-1.16.0.tar.gz tar xzf nginx-1.16.0.tar.gz cd nginx-1.16.0/ #预编译 ./configure \ --prefix/usr/loc…

2024050302-重学 Java 设计模式《实战享元模式》

重学 Java 设计模式&#xff1a;实战享元模式「基于Redis秒杀&#xff0c;提供活动与库存信息查询场景」 一、前言 程序员&#x1f468;‍&#x1f4bb;‍的上下文是什么&#xff1f; 很多时候一大部分编程开发的人员都只是关注于功能的实现&#xff0c;只要自己把这部分需求…

Facebook商城号怎么做?思路与操作分析

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

动态规划实现斐波那契数列,时间复杂度和空间复杂度解析

动态规划实现斐波那契数列 代码回顾&#xff1a; #include <iostream> using namespace std;// 动态规划实现&#xff0c;时间复杂度 O(n) unsigned long long fibonacciDP(int n) {if (n < 1) return n;unsigned long long prev2 0;unsigned long long prev1 1;u…

【面试宝藏】Redis 常见面试题解析其二

Redis 高级面试题解析 20. 说说 Redis 哈希槽的机制&#xff1f; Redis 集群采用哈希槽&#xff08;Hash Slot&#xff09;机制来分布和管理数据。整个哈希空间被划分为 16384 个槽&#xff0c;每个键通过 CRC16 校验后取模映射到一个哈希槽。每个节点负责一部分哈希槽&#…

【二进制部署k8s-1.29.4】十一、metallb的安装部署

文章目录 简介 一.安装metallb二.配置metallb三.验证metallb 简介 本章节主要讲解安装metallb-v0.7.1的安装&#xff0c;metallb算是平民版的负载均衡&#xff0c;用于测试、访问量较小的情况还是比较不错的&#xff0c;但是对于请求量比较的时候&#xff0c;由于流量都集中在一…

猫熊超市管理系统

import java.util.Scanner;//增加商品类 //此类用来录入一个商品的所有属性&#xff0c;并作为结果对其返回 public class Add {public Goods add1() {Scanner scanner new Scanner(System.in);System.out.println("请输入商品名称");String name scanner.next();S…

表示学习(Representation learning)以及相关(半监督)论文阅读

引言: 这篇博客主要介绍的是表示学习(representation learning),在此基础上,研究了Circle loss这篇CVPR文章。感觉所谓的半监督,目前,在图像分类领域作用寥寥,图数据已经与图像这类数据不是一个类别了。 表示学习(Representation learning)以及相关(半监督)论文阅读…

dns域名解析服务和bond网卡

目录 dns域名解析服务 一、DNS 1、定义 2、以www.baidu.com为例 3、域名体系结构 4、DNS解析使用的协议和端口 5、dns域名解析的过程 6、dns解析的优先级 二、如何实现域名解析 1、域名解析 2、bind配置文件位置 &#xff08;一&#xff09;正向解析 &#xff08;…

fedora40上安装dotnet-sdk-6.0

电脑已经安装过vs code&#xff0c;但是在终端上执行&#xff1a;dotnet --version还是报错。 现在要重新安装dotnet-sdk-6.0 1、确保清理干净之前的安装 首先&#xff0c;移除可能的残留文件&#xff1a; sudo dnf remove dotnet-sdk-6.0 sudo rm -rf /usr/share/dotnet/ …

Python面试宝典:Python中与Pandas数据分析相关的面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十九章:数据处理和分析:第二节:Pandas数据分析】 第十九章:数据处理和分析第二节:Pandas数据分析1. Pandas的核心数据结构2. 创建Series和DataFrame3. 数据访问和选择4. 数据清洗5…

利他性「销售」回复话术|学会事半功倍!

【菜鸟】&#xff1a;我给你的真的已经是最低价了 【销冠】&#xff1a;现在市场竞争这么激烈&#xff0c;能给你少100我都不会给你少报1块的&#xff0c;我的目的是留下你呀&#xff0c;又怎么会傻到报高价格把你拒之门外呢 【菜鸟】&#xff1a;适合你的才是最好的产品&#…

层出不穷的大模型产品,你怎么选?

随着近日腾讯元宝APP的正式上线&#xff0c;国内大模型产品又添一员。关于接连出现的“全能“大模型AIGC产品&#xff0c;你都用过哪些呢&#xff1f;不妨来分享一下你的使用体验吧&#xff01;在这些大模型产品中&#xff0c;你更倾向于选择哪款&#xff1f; 目前&#xff0c;…