构建openGauss-Lite-5.0.2-openEuler基础镜像

news2024/12/23 22:57:52

构建opengauss数据库基础镜像,需要克服几个困难:

1、使用root和opengauss普通用户来回切换:如果使用Dockerfile中RUN指令,执行su - user切换不生效。

2、需要设置sysctl内核参数;但是,即便使用了--privileged,设置的sysctl也不会被写到image配置中,即便修改了/etc/sysctl.conf,也不会生效;通过--sysctl kernel.sem=value进行设置,su - user切换之后也会失效。

3、容器内的data目录持久化到宿主机上。我们运行容器使用-v /host-directory:/container-directory,其方向是将宿主机的目录挂载到容器内部,如果/container-directory下有数据,也会被覆盖。反方向将容器内的目录挂载到宿主机是不行的。

组件说明
openGauss-Lite-5.0.2-openEuler-x86_64.tar.gzopengauss的轻量版本
openeuler/openeuler:22.03opengauss原生适配openEuler

STEP 1 docker build第一层镜像

 install.sh

#!/bin/bash
set -e

useradd opengauss
echo "install 字符集===================================>"
dnf -y install glibc-locale-source && rm -f /usr/lib/locale/locale-archive 
localedef -f UTF-8 -i en_US en_US.UTF-8 && export LC_ALL=en_US.UTF-8
echo "install 依赖包===================================>"
dnf -y install util-linux readline-devel libaio-devel net-tools findutils
echo "install 时区===================================>"
rm -f /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

su - opengauss -C 'tar zxvf /tools/openGauss-Lite-5.0.2-openEuler-x86_64.tar.gz -C /home/opengauss/'

if [ $? -eq 0 ]; then
  rm -rf /var/cache/dnf/*
  rm -f /tools/openGauss-Lite-5.0.2-openEuler-x86_64.tar.gz
fi

 Dockerfile

FROM openeuler/openeuler:22.03
COPY install.sh openGauss-Lite-5.0.2-openEuler-x86_64.tar.gz /tools/
RUN sh /tools/install.sh && rm -f /tools/install.sh
ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8

构建

docker build -t opengauss:v1 .

STEP 2 docker commit第二层镜像

mgmt_opengauss.sh

#!/bin/bash

source /home/opengauss/.bashrc

if [ ! -f /home/opengauss/openGauss/MH/data/postgresql.conf ];then
    mv /home/opengauss/openGauss/data /home/opengauss/openGauss/MH/
fi
PG_HOME=/home/opengauss/openGauss/MH/data

if [ $? -eq 0 ]; then
/home/opengauss/openGauss/install/bin/gs_ctl start -D $PG_HOME -Z single_node -l $PG_HOME/pg_log/logfile
fi
if [ $? -eq 0 ]; then
/home/opengauss/openGauss/install/bin/gs_ctl status -D $PG_HOME >>$PG_HOME/pg_log/logfile 
/usr/bin/tail -f $PG_HOME/pg_log/logfile 
fi

启动容器,并在容器内部操作

# 容器启动命令
docker run -it --privileged -h opengauss --name=opengauss -v /root/build-images/opengauss/:/tools opengauss:v1 /bin/bash

# 配置kernel.sem(只限于能够安装和初始化成功,此后启动的时候,sem还会变成默认的)
echo "kernel.sem = 32000      1024000000      500     32000" >>/etc/sysctl.conf && sysctl -p

# 配置启动脚本
cp /tools/mgmt_opengauss.sh /mgmt_opengauss.sh && chown opengauss: /mgmt_opengauss.sh

# 配置字符编码
echo "export LC_ALL=en_US.UTF-8" >>/home/opengauss/.bashrc 
echo "export LANG=en_US.UTF-8 " >>/home/opengauss/.bashrc 

# 安装openGauss
cd /home/opengauss/ && su - opengauss

mkdir /home/opengauss/openGauss
echo '密码'|sh install.sh --mode single -D /home/opengauss/openGauss/data -R /home/opengauss/openGauss/install --start

# 清理安装缓存
source /home/opengauss/.bashrc
/home/opengauss/openGauss/install/bin/gs_ctl stop
echo >/home/opengauss/.bash_history  && exit
echo >/root/.bash_history

docker commit

docker commit 容器ID opengauss:V2

STEP 3 docker build第三层镜像

Dockerfile

FROM opengauss:v2
USER opengauss
EXPOSE 5432
VOLUME  ["/home/opengauss/openGauss/data"]
ENTRYPOINT ["/bin/sh", "/mgmt_opengauss.sh"]

STEP 4 启动容器

# 宿主机创建共享目录/opengauss
rm -rf /opengauss/* && mkdir /opengauss && chmod 777 /opengauss
# 启动容器
docker run -d --sysctl kernel.sem="32000      1024000000      500     32000" -h opengauss --name=opengauss -v /opengauss:/home/opengauss/openGauss/MH opengauss:v3

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

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

相关文章

SPDK源码剖析一hello_world程序

SPDK初识之hello_world程序分析 首先是hello_world程序整体框架分析 int main(int argc, char **argv) {rc parse_args(argc, argv, &opts);if (spdk_env_init(&opts) < 0) { // spdk环境初始化&#xff0c;最终调用dpdk环境初始化}// 扫描设备&#xff0c;将驱…

KEEPALIVED高可用集群最详解

目录 一、高可用集群 1.1 集群的类型 1.2 实现高可用 1.3 VRRP&#xff1a;Virtual Router Redundancy Protocol 1.3.1 VRRP相关术语 1.5.2 VRRP 相关技术 二、部署KEEPALIVED 2.1 keepalived 简介 2.2 Keepalived 架构 2.3 Keepalived 环境准备 2.3.1 实验环境 2…

酒店民宿小程序开发,提升用户体验,增加收益

近年来&#xff0c;我国旅游业蓬勃发展&#xff0c;推动了酒店民宿的快速发展。目前&#xff0c;酒店行业也结合数字化模式打造出了线上酒店民宿预订小程序。 随着网络时代的到来&#xff0c;大红都开始热衷于在手机上完成各种消费&#xff0c;酒店民宿小程序的开发也顺应了时…

1.1 数据库的定义与作用

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

Linux服务器:Samba配置

Window配置 安装协议 首先确认自己的电脑有误安装SMB协议&#xff0c;安装方法&#xff1a;控制面板→程序功能 然后选择左侧的安装或关闭Window功能 安装就好了。 修改工作组 然后就是记住、或者修改Window账户所在组了 右键我的电脑属性&#xff0c;去找电脑的工作组&am…

【信创】双系统下删除Windows只保留麒麟系统

原文链接&#xff1a;【信创】双系统下删除Windows只保留麒麟系统 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在双系统环境下删除Windows操作系统并只保留麒麟系统的文章。在双系统环境中&#xff0c;如果你决定完全转向麒麟系统&#xff0c;删除Windows系统…

BayesPrism 增速 400 倍?!免疫反卷积算法 InstaPrism

生信碱移 BayesPrism 加速 计算细胞类型去卷积是一种重要的分析技术&#xff0c;用于模拟整体基因表达数据的成分异质性。之前小编给大家介绍过一篇子刊文章&#xff0c;其综合比较了多种细胞去卷积算法&#xff08;图1&#xff09;。研究的结果显示&#xff0c;BayesPrism 作…

文献解读-肿瘤测序-第二十八期|《基于Palbociclib的高通量联合药物筛选确定了HPV阴性头颈部鳞状细胞癌的协同治疗选择》

关键词&#xff1a;肿瘤测序&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;Palbociclib-based high-throughput combination drug screening identifies synergistic therapeutic options in HPV-negative hea…

HTML中的<fieldset>标签元素框的使用

HTML 提供的 <fieldset> 标签用于在表单中分组相关元素。 <fieldset> 标签会在相关元素周围绘制一个框。 <legend> 标签为 fieldset 元素定义标题。 语法如下&#xff1a; <fieldset><legend>标题</legend><!-- 元素内容... -->…

C++第三十六弹---二叉搜索树的性能飞跃:AVL树原理与实现

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1 AVL 树 1.1 AVL树的概念 1.2 AVL树节点的定义 1.3 AVL树的插入 1.4 AVL树的旋转 1.5 AVL树的验证 1 AVL 树 1.1 AVL树的概念 二叉搜索树虽…

韩顺平Java-第十九章:IO流

一 文件 文件是保存数据的地方。 1 文件流 文件在程序中是以流的形式来操作的。 流&#xff1a;数据在数据源&#xff08;文件&#xff09;和程序&#xff08;内存&#xff09;之间经历的路径&#xff1b; 输入流&#xff1a;数据从数据源&#xff08;文件&#xff09;到程…

深度解析 MetaArena 游戏引擎,如何让 GameFi 应用更具生命力?

从去年下边年 Friend.tech 引发的新一轮社交热&#xff0c;到去年年底铭文赛道高潮不断&#xff0c;加密市场情绪不断被点燃。但事实上&#xff0c;链游板块在最近几轮热潮中显得有些冷清&#xff0c;无论是彼时的 GameFi 龙头 Axie Infinity&#xff0c;还是在上一轮 GameFi 热…

PHP微信V3支付完整版:实现与微信退款回调 总结

一、在微信商户平台注册账号并完成相关设置&#xff0c;获取到商户号和API密钥。同时&#xff0c;下载并安装官方提供的PHP SDK。 二、发起支付 使用SDK发起支付请求相对简单。首先&#xff0c;创建一个UnifiedOrder对象&#xff0c;然后设置订单的相关信息&#xff0c;如商品…

【HeadFirst 设计模式】装饰者模式的C++实现

一、案例背景 Starbuzz是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店&#xff0c;在对面街上肯定还会看到另一家。因为扩张速度实在太快了&#xff0c;他们准备更新订单系统&#xff0c;以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时&am…

HTTP/1.1

目录 一、比较HTTP/1.0的优点 二、请求报文 1.请求报文 &#xff08;1&#xff09;格式 2.get请求 &#xff08;1&#xff09;请求行 &#xff08;2&#xff09;请求头 &#xff08;3&#xff09;请求体 3.post请求 &#xff08;1&#xff09;请求行 &#xff08;2&…

LLM - 微调(Fine-Tuning) Llama3 以及合并微调模型 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141218047 在微调 Llama3 大模型时&#xff0c;需要注意一些事项&#xff1a; 合适的预训练模型&#xff1a;不同的预训练模型具有不同的特点和适…

Selenium WebDriver 的 Microsoft Edge 驱动程序【附代码】

1、从 Microsoft Edge 驱动程序的官方网站下载与浏览器版本相匹配的驱动程序。 https://msedgewebdriverstorage.z22.web.core.windows.net/https://msedgewebdriverstorage.z22.web.core.windows.net/ 2、指向驱动程序&#xff08;msedgedriver.exe&#xff09;的路径 serv…

Datawhale X魔搭AI夏令营 AIGC方向Task01学习笔记

目录 一、开通PAL-DSW适用 二、报名可图Kolors-LoRA风格故事挑战赛 三、创建PAL实例 四、跑baseline 五、结果上传魔塔 六、关闭PAL 小白&#xff0c;刚跑通Baseline&#xff0c;初步了解了竞赛。 Datawhale官方的速通教程链接&#xff1a;Task 1 从零入门AI生图原理&am…

利用Matlab实现【图论】中的图

目录 前言 一、图论是什么&#xff1f; 1.基本概念 2.表达形式 二、使用matlab作图 1.作无向图 2.作有向图 总结 前言 本文将讲解如何使用matlab中的函数实现最短路径算法&#xff0c;所提供代码仅供参考&#xff0c;严禁用于数模比赛中使用&#xff01; 一、图论是什么&#…

Linux:进程管理,任务管理,监控系统

1&#xff0c;任务管理 从前台丢到后台&#xff1a;【ctrl】 z&#xff0c;如果正在使用vim&#xff0c;突然想干其他事情&#xff0c;但又不想关闭vim&#xff0c;只需要暂时将vim丢到后台等待即可&#xff08;暂停&#xff09;。 查看后台任务状态&#xff1a;jobs&#xff0…