0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Dockerfile制作openGauss镜像

OSC开源社区 来源:OSC开源社区 作者:OSC开源社区 2022-12-07 15:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

容器镜像是一个不可变的只读文件,基于相同镜像文件创建启动的容器,都将获得完全相同的Docker容器。容器是镜像的实例,具有生命周期。

之前几期使用的openGauss镜像是云和恩墨提供的,openGauss源码中已经提供了制作脚本,可以直接使用,本篇介绍根据openGauss开源代码仓已有的Docker build脚本来制作openGauss 3.0.0镜像,自己制作的镜像会更加安全可靠,也更方便DevOps用户的安装、配置和环境设置。

e161f250-75fb-11ed-8abf-dac502259ad0.png

环境准备

本篇使用的是:x86 ECS云服务器+CentOS 7.6

另外,ARM64 openEuler 20.03 LTS也是支持的

PS:镜像制作的话请尽量使用公网环境,内网的话可能会遇到各种奇怪的问题,即使配置好了内网yum源等也还是报错。

docker 安装&配置

1、参考之前《【云原生】使用Docker部署openGauss》的步骤安装并启动docker服务。yum源使用的是华为云。

yum install -y yum-utils 
wget -O /etc/yum.repos.d/docker-ce.repo http://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo 
sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo 
sudo yum makecache fast 
sudo yum install docker-ce 
systemctl enable docker  
systemctl start docker  
systemctl status docker

2、设置docker加速。由于国内直接访问`docker hub`网速很慢,拉取镜像的时间很长。通常我们使用镜像加速或者从国内的一些平台镜像仓库上拉取。新建`daemon.json`文件。

[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# cd /etc/docker/ 
[root@iZ2zegavrsiopm50rp12ygZ docker]# ll 
total 4 
-rw------- 1 root root 244 Aug  2 21:21 key.json 
[root@iZ2zegavrsiopm50rp12ygZ docker]# vi daemon.json

配置几条国内的加速地址。我这分别是Docker中国区的、网易的和中国科技大学的。

{ 
 
        "registry-mirrors": [  
        "https://registry.docker-cn.com", 
        "http://hub-mirror.c.163.com", 
              "https://docker.mirrors.ustc.edu.cn"] 
 
}

贴完以后, `:wq`重启docker服务使配置生效。

[root@iZ2zegavrsiopm50rp12ygZ docker]# systemctl daemon-reload  
[root@iZ2zegavrsiopm50rp12ygZ docker]# service  docker restart 
Redirecting to /bin/systemctl restart docker.service

使用Docker build的方式生成openGauss 3.0.0镜像镜像

1、获取openGauss企业版3.0.0的安装包和源码文件。这里我用的是CentOS,选择的是企业版。对于只是想体验一下的同学来说选择轻量版就足够了,步骤和主要功能是一样的,优点是包更小,占用存储空间更少,缺点是裁掉了一些功能,具体差别见官方文档。

[root@iZ2zegavrsiopm50rp12ygZ ~]# wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-64bit-all.tar.gz 
[root@iZ2zegavrsiopm50rp12ygZ opt]# wget https://gitee.com/opengauss/openGauss-server/repository/archive/master.zip

环境没有`unzip` ,自己先装一个。然把源码包master.zip解压得到`openGauss-server-master`文件夹,软件安装包`openGauss-3.0.0-CentOS-64bit-all.tar.gz`解压获得二进制安装包`openGauss-3.0.0-CentOS-64bit.tar.bz2`

[root@iZ2zegavrsiopm50rp12ygZ opt]# yum install unzip 
[root@iZ2zegavrsiopm50rp12ygZ opt]# unzip master.zip  
[root@iZ2zegavrsiopm50rp12ygZ opt]# tar -zvxf openGauss-3.0.0-CentOS-64bit-all.tar.gz  
 
[root@iZ2zegavrsiopm50rp12ygZ opt]# ll 
total 424680 
-rw-r--r--  1 root root 201796837 Aug  2 21:04 master.zip 
-rw-r--r--  1 root root 116068945 Apr  1 18:39 openGauss-3.0.0-CentOS-64bit-all.tar.gz 
-rw-r--r--  1 root root       105 Apr  1 18:26 openGauss-3.0.0-CentOS-64bit-cm.sha256 
-rw-r--r--  1 root root   6201097 Apr  1 18:26 openGauss-3.0.0-CentOS-64bit-cm.tar.gz 
-rw-r--r--  1 root root        65 Apr  1 18:25 openGauss-3.0.0-CentOS-64bit-om.sha256 
-rw-r--r--  1 root root  14139662 Apr  1 18:25 openGauss-3.0.0-CentOS-64bit-om.tar.gz 
-rw-r--r--  1 root root        65 Apr  1 18:26 openGauss-3.0.0-CentOS-64bit.sha256 
-rw-r--r--  1 root root  96246093 Apr  1 18:26 openGauss-3.0.0-CentOS-64bit.tar.bz2 
drwxr-xr-x 13 root root      4096 Aug  2 19:27 openGauss-server-master 
-rw-------  1 root root        65 Apr  1 18:24 upgrade_sql.sha256 
-rw-------  1 root root    383932 Apr  1 18:24 upgrade_sql.tar.gz

e171d576-75fb-11ed-8abf-dac502259ad0.png

2、因为现在要制作的是`3.0.0`版本的镜像包,源码下面并没有这个版本,所以需要修改一些配置。将dockerfiles代码库1.1.0拷贝一份另存为3.0.0。将二进制安装包`openGauss-3.0.0-CentOS-64bit.tar.bz2`放到`dockerfiles`文件夹下面。因为我的是X86架构修改`dockerfile_amd`文件,主要是替换版本号。使用arm架构的同学则需要修改`dockerfile_arm`

[root@iZ2zegavrsiopm50rp12ygZ opt]# cd openGauss-server-master/docker/dockerfiles/ 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# mkdir 3.0.0 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# cp 1.1.0/* 3.0.0/ 
 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# cp /opt/openGauss-3.0.0-CentOS-64bit.tar.bz2 3.0.0/ 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# sed -i "s/openGauss-1.1.0-CentOS-64bit.tar.bz2/openGauss-3.0.0-CentOS-64bit.tar.bz2/g" 3.0.0/dockerfile_amd

3、在dockerfiles文件夹下运行`buildDockerImage.sh``-i` 表示不对二进制包进行MD5检查。`-v`表示设置的版本参数。`buildDockerImage.sh`是封装后的制作脚本,它执行时会根据当前OS的架构是X86还是Arm去调用真正的制作镜像的`dockerfile`文件。`dockerfile`文件就像是一个配方,将作镜像需要的工具、依赖库、系统等统统写进来。有兴趣的小伙伴可以观察一下整个的镜像生成流程。

[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# sh buildDockerImage.sh -v 3.0.0 -i 
Checking Docker version. 
Ignored MD5 checksum. 
========================== 
DOCKER info: 
Client: 
 Context:    default 
 Debug Mode: false 
 Plugins: 
  app: Docker App (Docker Inc., v0.9.1-beta3) 
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker) 
  scan: Docker Scan (Docker Inc., v0.17.0) 
 
Server: 
 Containers: 0 
  Running: 0 
  Paused: 0 
  Stopped: 0 
 Images: 0 
 
 ...此处省略若干回显 
 ---> 7e3ef9a88226 
Successfully built 7e3ef9a88226 
Successfully tagged opengauss:3.0.0 
 
  openGauss Docker Image  3.0.0 is ready to be extended:  
 
    --> opengauss:3.0.0 
 
  Build completed in 73 seconds.

整个过程用了大概一分钟。

根据官方说明,运行buildDockerImage.sh脚本时,如果不指定-i参数,此时默认提供MD5检查,需要您手动将校验结果写入md5_file_amd64文件。

## 在dockerfiles/3.0.0目录下修改md5校验文件内容 
md5sum openGauss-3.0.0-CentOS-64bit.tar.bz2  
## 将校验信息写入校验文件md5_file_amd64中 
echo "58b9a029719f2d9d32b7d619c850735c openGauss-3.0.0-CentOS64bit.tar.bz2" > md5_file_amd64

4、查看制作的镜像,第一条opengauss 3.0.0 就是。体积稍微有点大,到了664M

[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# docker images 
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE 
opengauss    3.0.0      7e3ef9a88226   2 minutes ago   664MB 
centos       7.6.1810   f1cb7c7d58b7   3 years ago     202MB

e189e99a-75fb-11ed-8abf-dac502259ad0.png

验证容器镜像

使用镜像启动然后登录容器,连接openGauss数据库进行验证。

[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]#docker run --name wxxopengauss --privileged=true -d -e GS_PASSWORD=Gauss@123 -p 15432:5432 -v /var/lib/opengauss opengauss:3.0.0 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# docker ps 
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                     NAMES 
dc910aeaac18   opengauss:3.0.0   "entrypoint.sh gauss…"   46 seconds ago   Up 45 seconds   0.0.0.0:15432->5432/tcp   wxxopengauss 
[root@iZ2zegavrsiopm50rp12ygZ dockerfiles]# docker exec -it dc910aeaac18 /bin/bash 
[root@dc910aeaac18 /]# su - omm 
[omm@dc910aeaac18 ~]$ gsql 
omm=# create user wxx with password "Gauss@123"; 
omm=# alter user wxx sysadmin; 
omm=# grant all on schema public to wxx; 
omm=# create table test(id int); 
omm=# insert into test values(886); 
omm=# select * from test;    

数据库使用正常,镜像制作成功。

e199a47a-75fb-11ed-8abf-dac502259ad0.png

openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67755
  • 容器
    +关注

    关注

    0

    文章

    521

    浏览量

    22825
  • 镜像
    +关注

    关注

    0

    文章

    178

    浏览量

    11552

原文标题:使用Dockerfile制作openGauss镜像

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    开发者指南 | 华为昇腾Ascend310B启动镜像制作与烧写全攻略

    在嵌入式Linux开发中,启动镜像制作与烧写是硬件部署的核心环节。本文详细解析华为昇腾Ascend310B启动镜像的完整流程,从环境搭建到烧写验证,为开发者提供一站式解决方案。华为昇腾310B
    的头像 发表于 11-24 18:03 1473次阅读
    开发者指南 | 华为昇腾Ascend310B启动<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>与烧写全攻略

    openGauss携手鲲鹏斩获HyBench HTAP性能榜第一

    openGauss凭借与鲲鹏处理器的深度协同优化,以混合负载综合能力评分指标H-Score 1713.72分荣登榜首,刷新HTAP数据库性能新高度。 此次测试采用openGauss 7.0.0创新
    的头像 发表于 08-13 18:56 780次阅读

    润和软件发布鲲鹏+openGauss全栈智能体解决方案

    近日,江苏润和软件股份有限公司(以下简称“润和软件”)携手鲲鹏,于鲲鹏开发者创享日上海站共同发布“以鲲鹏算力为基座、深度协同openGauss开源数据库”的AgentRUNS全栈智能体解决方案,赋能企业打造场景驱动的智能业务引擎,重塑数字化运营范式。
    的头像 发表于 05-14 12:01 904次阅读

    Allegro Skill布局功能之整体模块镜像介绍

    使用“整体镜像”功能可以实现快速、批量、多元素的镜像操作,此功能可以将整个模块电路快速镜像,包括电路中的走线、铜皮、字符等,有便捷方便的操作方式,例如下文演示。 1、在菜单栏中点击“FanySkill-布局-整体
    的头像 发表于 05-08 16:42 1937次阅读
    Allegro Skill布局功能之整体模块<b class='flag-5'>镜像</b>介绍

    Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

    本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成镜像批量烧录。触
    的头像 发表于 04-28 16:45 778次阅读
    Linux文件系统打包及<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>,触觉智能RK3562开发板演示

    rootfs镜像制作其实没那么难

    在嵌入式Linux开发中,文件系统的打包和镜像制作是关键步骤。本文介绍了Linux核心板文件系统的打包与镜像制作方法,适合嵌入式开发人员快速上手。前言致远电子Linux核心板提供的系统
    的头像 发表于 04-03 11:37 908次阅读
    rootfs<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>其实没那么难

    树莓派镜像制作、烧录及运行

    你是否想过自己动手打造一个专属的操作系统镜像?无论是为极客项目定制开发环境,还是让老旧设备焕发新生,系统镜像定制都是极客玩家的必备技能。
    的头像 发表于 03-27 16:00 2130次阅读

    基于Docker镜像逆向生成Dockerfile

    在本文中, 我们将通过理解Docker镜像如何存储数据, 以及如何使用工具查看镜像方方面面的信息来逆向工程一个Docker镜像; 以及如何使用Python的Docker API来构建一个类似Dedockify的工具来创建
    的头像 发表于 03-10 09:45 1230次阅读
    基于Docker<b class='flag-5'>镜像</b>逆向生成<b class='flag-5'>Dockerfile</b>

    docker-proxy镜像加速仓库

    自建多平台容器镜像代理服务,支持 Docker Hub, GitHub, Google, k8s, Quay, Microsoft 等镜像仓库。
    的头像 发表于 03-06 16:06 810次阅读
    docker-proxy<b class='flag-5'>镜像</b>加速仓库

    Docker-镜像的分层-busybox镜像制作

    容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是否也会被修改? 可写层的概念: Cpoy-on-Write 知识点6:制作一个busybox镜像 1、编写Doc
    的头像 发表于 01-15 10:44 1022次阅读
    Docker-<b class='flag-5'>镜像</b>的分层-busybox<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>

    华为云 X 实例的镜像管理详解

    前言 随着云计算的不断普及,云服务器成为企业和开发者日常工作中的重要工具。为了提升工作效率和降低运维成本,云服务器镜像的管理尤为重要。镜像作为服务器或磁盘的模板,预装了操作系统、软件及配置,是快速
    的头像 发表于 01-07 17:01 1521次阅读
    华为云 X 实例的<b class='flag-5'>镜像</b>管理详解

    Dockerfile镜像制作与Docker-Compose容器编排

    Dockerfile镜像制作 docker/podman中, 镜像是容器的基础,每次执行docker run的时候都会指定哪个基本镜像作为容
    的头像 发表于 01-07 11:01 1160次阅读
    <b class='flag-5'>Dockerfile</b><b class='flag-5'>镜像</b><b class='flag-5'>制作</b>与Docker-Compose容器编排

    OpenHarmony通过挂载镜像来修改镜像内容,RK3566鸿蒙开发板演示

    OpenHarmony通过挂载镜像来修改镜像内容的教程,提高修改镜像内容效率!
    的头像 发表于 01-03 14:21 969次阅读
    OpenHarmony通过挂载<b class='flag-5'>镜像</b>来修改<b class='flag-5'>镜像</b>内容,RK3566鸿蒙开发板演示

    瞩目!海量数据再获2024年度openGauss社区突出贡献单位

    12月27日,备受瞩目的openGaussSummit2024在北京盛大举行。本次峰会汇聚了数据库行业的众多精英与领袖,共同探讨数据库技术的最新进展与未来趋势。海量数据作为openGauss社区
    的头像 发表于 12-30 10:09 727次阅读
    瞩目!海量数据再获2024年度<b class='flag-5'>openGauss</b>社区突出贡献单位

    软通动力荣膺“openGauss社区突出贡献单位”

    12月27日,主题为“汇聚数据库创新力量,引领智能时代新未来”的openGauss Summit 2024在北京召开。大会由openGauss社区和全球计算联盟主办,软通动力等社区成员单位共同协办
    的头像 发表于 12-27 18:47 970次阅读