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
🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连点赞评论收藏就更好啦!谢谢各位大佬给予的支持!
版权归原作者 Gauss松鼠会 所有, 如有侵权,请联系我们删除。