0


【云原生】使用Docker部署openGauss

Docker是一个开源的应用容器引擎,让开发者可以把应用及依赖包打包到一个可移植的容器中,然后发布到流行的Linux或Windows机器或虚拟机上。openGauss是一款高性能、高安全、高可靠、高智能的企业级开源关系型数据库。openGauss 3.0.0 发布后,云和恩墨制作了docker版本。基于此, 我们可以不需要使用原始安装包和一系列安装配置,可以直接运行docker镜像的版本。本文主要介绍通过Docker安装openGauss 3.0.0,方便DevOps用户的安装、配置和环境设置。

1.安装Docker

1.首先准备一台x86_64已安装了CentOS 7.6的服务器。我用的还是上次centos安装时找小伙伴申请的华为云ECS服务器,不过卸载掉了已安装的openGauss。
2.(可选)配置yum源。yum是centos下更新、管理软件的命令,yum源是yum命令去哪里取安装包的地图,yum命令查询yum源也就是repo文件上配置的地址去取相应的rpm包进行安装。
常见的yum源:华为云、网易、阿里云等。我使用的是华为云的镜像 https://mirrors.huaweicloud.com/home ,需要先注册。然后按照图片指示和网站描述的步骤和命令进行操作,注意换一下CentOS的版本。执行wget 获取repo的时候,如果执行失败, 可以尝试把https 换成http。

如果你可以直接执行 yum search zlib-devel 而没有报错的话就说明无需额外配置,可以直接下一步了。
有些公司内无法连接公网的需要自己配置相应的公司内部的yum源。
3.然后下载需要的安装包。

yum install -y yum-utils

等待下载完成。

4.设置镜像的仓库 。这里我还是使用的是华为云的镜像,然后按照图片指示和网站描述的步骤和命令进行操作,注意根据OS切换页签到Fedora/CentOS/RHEL这里。 PS: 这个也可以是其他网站的源,网上有很多,这里我就不再赘述。

这里第2步执行wget 获取repo的时候,如果执行失败, 可以尝试把https 换成http。

执行 sudo yum install docker-ce 的时候要根据提示输入y ,等到提示Complete ! 就安装好了。

5.启动Docker,状态为active(running)就OK。

systemctl enable docker 
systemctl start docker 
systemctl status docker

2. 配置Docker

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

cd  /etc/docker/ 
vi daemon.json

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

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

2.重启docker。

systemctl  daemon-reload 
service docker restart

3.执行 docker info 命令查看最后是否有新加的registry-mirrors部分。

4.拉取hello world验证下,如图所示表示成功。

docker pull hello-world

3 拉取openGauss镜像

openGauss 3.0.0 有企业版和轻量版。轻量版定位是在软硬件资源受限场景下仍可使用openGauss,但是保留了企业版大部分的特性,轻量版通过参数默认关闭的特性:Ustore、Asp、增量检查点、双写、列存、段页式存储等,还有些不支持的特性如ORC文件访问、Kerberos安全校验、AI、全密态数据库、CM、OM。工具也进行了精简,保留了用户常用的gsql、gs_ctl、gs_guc、gs_dump、gs_restore等工具,和安装部署、升级的工具liteom。但是对于个人或者实验环境也足够了。
前两部稍微繁琐一丢丢,但是配置好了一劳永逸,可以随意拉镜像了。openGauss镜像这里我们用的云和恩墨的镜像。

从3.0.0版本开始(包括3.0.0版本)

  • 容器使用Lite版安装包,基础镜像的大小进一步降低到100MB以下;
  • 默认启动后的空载内存占用小于200MB;
  • 在容器内部的操作系统级别添加vi,ps等基础命令。

因为3.0.0是最新版本,所以latest就是3.0.0。这里,直接用的指定版本。

docker pull enmotech/opengauss:3.0.0

执行docker images查看下我们的已有镜像,enmotech/opengauss:3.0.0 也在此列。

4. 开启实例

1.镜像拉取后就可以一条命令启动实例。GS_PASSWORD=Enmo@123 可以修改成自己熟悉的密码。

docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:3.0.0

GS_PASSWORD:设置openGauss数据库的超级用户omm以及测试用户gaussdb的密码。如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。
GS_NODENAME:数据库节点名称,默认为gaussdb。
GS_USERNAME:数据库连接用户名,默认为gaussdb。
GS_PORT:数据库端口,默认为5432。

除了GS_PASSWORD外都可以使用默认值。若要设定非默认值,和GS_PASSWORD一样使用 -e 设定。

2.进入容器,测试连接

[root@pekphisprb70593 dockerfiles]# docker ps 
--获取CONTAINER ID 
[root@pekphisprb70593 dockerfiles]# docker exec -it 1d54ee4a5f40 /bin/bash 
--把这个命令里的 1d54ee4a5f40 修改为实际的ID

3.然后就和在普通服务器一样操作了。openGauss镜像配置了本地信任机制,因此在容器内连接数据库无需密码。

root@1d54ee4a5f40:/# su - omm 
omm@1d54ee4a5f40:~$ gsql

使用docker安装确实简单又快捷。

5. Q&A

1.Q:docker 启动实例的时候报错“docker: Error response from daemon: Conflict. The container name "/opengauss" is already in use by container”,但是docker ps又查不到,而且也连不上 ?
A:先执行docker ps -a 查看所有进程,看到处于Exited 状态。之前已经启动过opengauss这个名字的实例了,再次执行的话就会报冲突。至于查不到,原因很可能是启动后重启了docker。

解决办法有两个,一是创建实例的时候修改实例名,如opengaussNew;二是删除原来的opengauss实例,然后重新启动实例。

docker rm 实际的CONTAINER ID

2.Q:如果不需要了,要怎么卸载?
A:如果不需要了,就可以不需要卸载啊后处理,直接通过删除容器的方式删除数据库。

−删除容器

docker ps -a 
docker rm 实际的CONTAINER ID

−删除镜像

docker rmi -f 镜像ID

🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!

标签: docker 容器 数据库

本文转载自: https://blog.csdn.net/GaussDB/article/details/125799678
版权归原作者 Gauss松鼠会 所有, 如有侵权,请联系我们删除。

“【云原生】使用Docker部署openGauss”的评论:

还没有评论