Redian新闻
>
使用Dockerfile制作openGauss镜像

使用Dockerfile制作openGauss镜像

公众号新闻


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

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

环境准备

本篇使用的是: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

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

验证容器镜像

使用镜像启动然后登录容器,连接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;     

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

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


你参与开源吗?
扫描下方二维码
抽开源中国周边啦~

END



怎么理解开源世界里的白嫖?



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦~

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Ousted Luckin Founder Charts Comeback With New Coffee Business奇点已来,推进All on Serverless有哪些困难、如何破局?| 解读Serverless的2022从Oracle迁移到openGauss实战分享季节刚好,红叶正艳5 款顶级 Docker 可视化管理工具,免费又好用!EulerMaker:构建 openEuler 全场景生态 | Linux 中国两周年的纪念Serverless时代已经全面到来:冷启动时间降低90%,数据分析All on Serverless在 Docker 中运行 Mac OS 是什么样的体验?iPhone XS MAX 256g gold back cracked(aftermarket battery )恭喜Boston College学员斩获BlackRock(US)2023 Internship Offer!如何为 Python 应用选择最好的 Docker 镜像?Serverless时代已来,多行业拥抱ServerlessDocker发布集成WebAssembly的首个技术预览版OpenStack 已死?最新报告显示 OpenStack 部署呈爆发式增长,整体规模超4000万Docker逃逸那些事儿五小工业的一些小事5 年工作经验,Docker 的几种网络模式都说不清,你敢信?Docker 容器网络及其配置详解iPhone X 256G Black battery health 83% unlocked苹果减少对中国依赖,要把印度变成全球iPhone制造中心;B站出海,重点拓展东南亚市场丨Going Global周报使用Hugging Face和IPU在Paperspace上快速制作NLP应用原型【Locker Room】橄榄球、女篮、电竞!这次Locker Room运动上新你会选什么?iPhone 12 black 128g(shadowing back camera,good front camera)86%东京在召唤4-小田原的鳗鱼饭bāo huā shēng?bō huā shēng?【独家远程实习项目】DataPrint | Marketing & Bussiness Developement实习项目放出Docker夺命连环15问,你能坚持第几问?Postdoctoral Research Associate in Immunology and Infectious DisDocker 又涨价了美国入境档案--马一浮1903年旧金山Logitech G502 HERO High Performance RGB Gaming Mousedocker 初体验:docker 部署 wordpress 博客系统汇总了近50场面试,这70多页K8s/Docker/DevOps通用性极强 | 极客时间使用 PowerFlex 在 Kubernetes 平台上部署 Microsoft SQL Server 大数据集群
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。