使用docker运行openGauss
在linux上通过docker的方式运行开源数据库openGauss
基本环境
笔者使用的是Archlinux
发行版,通过Docker
容器技术运行基于PostgreSQL
的开源数据库openGauss
Docker 环境搭建
1.安装 docker
linux发行版可以很方便地通过命令行安装(在此之前请先确保网络状态良好)
以下是Archlinux
的安装方式
1 | sudo pacman -S docker # 安装docker |
其他的安装方式可参考使用虚拟机VMwarepro1623镜像文件导入部署openGauss3.1.1指导手册 | 墨天轮(modb.pro)
2.启动 docker
1 | sudo systemctl start docker # 启动docker |
3.docker 常用命令
主要参考自菜鸟教程 ,关于部分命令的具体示例可参考下面 openGauss 环境的搭建
容器使用相关命令
命令 | 作用 |
---|---|
docker run | 创建并运行新的容器,使用-it 参数指定命令行模式运行,使用--name 参数指定容器名称,使用-d 参数指定在后台运行容器,使用-P 参数随机映射到主机端口或-p 参数指定主机端口映射 |
docker ps -a | 查找所有已存在的容器 |
docker start | 启动一个已存在的容器,需要提供容器的ID |
docker stop | 停止一个已存在的容器,需要提供容器的ID |
docker restart | 重启一个已存在的容器,需要提供容器的ID |
docker attach | 进入一个已存在的容器,需要提供容器的ID。注意:该命令在退出容器之后会自动停止容器。退出容器使用exit 命令 |
docker exec | 进入一个已存在的容器,需要提供容器的ID,配合-it 参数并指定终端/bin/bash 进入容器命令行。该命令在退出容器之后,容器不会停止。退出容器使用exit 命令。 |
docker export | 导出一个已存在的容器,需要提供容器的ID,配合> xxx.tar 命令导出容器快照到本地文件xxx.tar |
docker import | 导入容器快照文件,使用`cat ./xxx.tar |
docker rm | 删除一个已存在的容器,需要提供容器的ID,使用-f 参数强制删除 |
docker container | 批量处理容器,例如删除所有处于终止状态的容器docker container prune |
docker port | 查看容器的端口映射,需要提供容器的ID |
镜像使用相关命令
命令 | 作用 |
---|---|
docker images | 列出本地主机上已存在的镜像 |
docker search | 搜索指定的docker镜像 |
docker pull | 拉取指定的docker镜像 |
docker rmi | 删除指定的docker镜像 |
docker commit | 从已有镜像的基础上创建新镜像,-m="xxx" 参数表示提交的描述信息,-a="xxx" 参数指定镜像的作者,test/xxx:v2 参数指定镜像的名称和标签 |
docker build | 从零开始创建一个新的镜像,需要先创建一个包含特定指令组的Dockerfile 文件 |
docker tag | 为docker镜像添加标签 |
4.配置 docker 组
在linux中使用docker必须以root权限sudo
执行命令或者切换到root用户身份运行(不推荐),否则所有的docker命令前都需要添加sudo
,表示以root权限执行命令。这里新创建了一个用户组,专门用于操作docker
由于通过pacman
方式安装docker
时自动创建好了docker组,这里直接将当前普通用户添加至docker组中即可。
添加当前用户至docker组
1 | sudo gpasswd -a $USER docker |
当前会话立即切换到docker用户组 (也可以直接重启shell,就不需要执行newgrp
命令了)
1 | newgrp docker |
测试docker命令,这时就不需要在命令前添加sudo
1 | docker ps |
5.配置 docker 国内加速
阿里云官网 获取用户专属的镜像加速地址
可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
1 | sudo mkdir -p /etc/docker |
参考Docker 镜像加速 | 菜鸟教程(runoob.com)
6.docker 容器外部访问连接
默认启动的docker容器只能在容器内部访问,但有时需要在容器外部访问,比如后面使用数据库图形化管理工具远程连接 openGauss 数据库。
使用docker run
配合-p
或-P
参数指定端口映射,这里指定端口映射方便后续查找
1 | docker run --name opengauss --privileged=true -d -e GS_PASSWORD=openGauss@123 -p 15432:5432 enmotech/opengauss:latest |
通过-p
命令指定docker容器内的5432端口
(openGauss的默认监听端口)映射到主机的15432端口
上。之后就可以通过主机的15432端口
访问容器数据库。
openGauss 环境搭建
这里使用openGauss
的docker镜像,可直接参考镜像作者提供的文档
1.拉取 docker 镜像
1 | docker search openGauss # 搜索openGauss的docker镜像 |
搜索结果如下,这里选择 stars 收藏量最高的镜像
1 | docker pull enmotech/opengauss # 拉取镜像 |
2.启动 openGauss 容器
只在容器内访问
1 | docker run --name opengauss --privileged=true -d -e GS_PASSWORD=openGauss@123 enmotech/opengauss:latest |
允许外部访问
1 | docker run --name opengauss --privileged=true -d -e GS_PASSWORD=openGauss@123 -p 15432:5432 enmotech/opengauss:latest |
注意GS_PASSWORD
设置为你的密码,密码长度8个字符及以上,必须同时包含英文字母大小写,数字,以及特殊符号,用于后续图形化数据库管理工具连接
3.进入 openGauss 容器
1 | docker ps # 查看正在运行中的容器 |
4.使用 gsql 配置 openGauss
注意:openGauss的docker镜像版本是没有gs_om
和gs_guc
。另外,初次操作数据库时需要在omm用户下进行
使用 gsql 连接到数据库
1 | su - omm # 切换到omm用户 |
在内部访问数据库时也可以只写
gsql
不带任何参数的命令来连接数据库这是因为该openGauss镜像配置了本地信任机制,因此在容器内连接数据库无需密码,但是如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码
对于通过其他方式安装openGauss的,请另行参考其他教程
创建新的数据库用户
omm用户的权限过大,主要用于访问初始数据库进行初始配置,为避免omm用户误操作对数据库造成重大损失,这里新创建一个普通用户并授予基本权限。
注意:sql语句结尾带分号。
1 | create user stu with password "Bigdata@123"; # 创建一个用户名为stu,密码为Bigdata@123的用户 |
创建新的数据库
openGauss数据库,虽然被称为数据库,但实际上它是一个RDBMS(Relational Database Management System,关系型数据库管理系统)。因此它并不是一个具体的数据库,而是一个管理多个数据库的系统。
1 | create database stu_test owner stu; # 创建一个名为stu_test的数据库并指定所有者为stu |
使用新用户连接
先使用\q
命令退出数据库,再使用新用户连接数据库
1 | gsql -d stu_test -U stu -W'Bigdata@123' -h 127.0.0.1 -p 5432 |
5.openGauss 数据库的使用
基本操作
使用
\c dbname
切换数据库(dbname为数据库名称)使用
\l
查看数据库系统的数据库列表也可以通过
SELECT datname FROM pg_database;
的方式通过系统表查询数据库列表使用
\dt
列举数据表,如果当前数据库内还没有数据表,则输出No relations found.
使用
\d+
列举所有数据表、视图和索引使用
\d+ tablename
查看指定数据表的属性使用
\dn
列举架构(schema)使用
\di
查看索引使用
\db
查询表空间,也可通过SELECT spcname FROM pg_tablespace;
实现查看数据库用户列表
SELECT * FROM pg_user;
查看用户属性
SELECT * FROM pg_authid;
查看所有角色
SELECT * FROM PG_ROLES;
使用
\c - username
切换到其他数据库用户使用
\q
命令退出数据库
创建 schema
1 | create schema stu authorization stu; |
创建数据表
1 | create table stu_table (id int); |
向表中添加数据
1 | insert into stu_table values (100); |
sql语法在大部分数据库管理系统(RDBMS)之间是通用的,更多sql语法可参考笔者的另一篇文章MySQL基础
注意:Postgresql
对大小写不敏感,使用sql语句创建出来的数据库、数据表的名称以及数据内容等默认全转换为小写字母,如果需要严格匹配字母大小写,请在编写sql语句时用英文双引号""
包围需要指定大小写的数据库、数据表的名称以及数据内容等。
6.图形化数据库连接工具
这里笔者参考了三款linux上可用的数据库客户端软件 | 知乎(zhihu.com) ,找到了几款linux平台上开源的数据库连接工具。这里以 DbGate 为例,其他连接工具也是类似的配置流程。
更多数据库连接工具推荐
开源 5 款超好用的数据库 GUI 带你玩转 MongoDB、Redis、SQL 数据库 | 知乎(zhihu.com)
8个适用于 Linux 管理员的最佳MySQL/MariaDB GUI 工具
安装工具
在Archlinux
下可通过以下命令直接安装
1 | yay -S dbgate-bin |
大致界面如下
连接配置
File —> Add connection 添加一个新的连接
填写配置,其中Connection type
设置为PostgreSQL
,Port
为docker映射的主机端口号,User
和Password
是前面新创建的数据库用户的名称和密码。最后用Test
测试连接是否成功,用Save
保存连接配置,用Connect
连接数据库
最终连接结果如下
编写 SQL
File —> New query 新建查询(.sql文件),在该文件中编写具体的sql语句。
或者选中对应的数据库新建查询,确保新建查询和具体的数据库对应
编写并执行SQL语句
参考资料
opengauss docker安装 | 墨天轮(modb.pro)
enmotech/opengauss | dockerhub(hub.docker.com)
- 标题: 使用docker运行openGauss
- 作者: Entropy Tree
- 创建于 : 2023-03-05 23:52:06
- 更新于 : 2024-07-10 14:30:03
- 链接: https://www.entropy-tree.top/2023/03/05/opengauss-env-build/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。