银河麒麟V10 docker 离线安装 opengauss 数据库(单节点部署)

本文记录在银河麒麟V10上使用 docker 离线安装 opengauss 数据库的过程。

  1. 准备合适的 docker 镜像
  2. 通过文件传输工具将镜像传输至服务器
  3. 加载镜像文件
1
docker load -i opengauss_3.0.0.tar

正常应该是输出类似这样的内容:

1
2
3
4
5
6
6f37ca73c74f: Loading layer [==================================================>]  75.16MB/75.16MB
fbf2d42d54b9: Loading layer [==================================================>] 57.7MB/57.7MB
c777acc6f953: Loading layer [==================================================>] 20.48kB/20.48kB
a8d219ac51aa: Loading layer [==================================================>] 337.4MB/337.4MB
63f854361eb8: Loading layer [==================================================>] 20.99kB/20.99kB
Loaded image: enmotech/opengauss:5.0.0

如果提示下面的内容,可能是你的 docker 没有启动

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

1
systemctl start docker
  1. 验证镜像是否加载成功,返回如下情况即为成功,下面的 enmotech/opengauss是你的镜像名称,不同地方下载的镜像该名称可能不同,这个名称后面会用到
1
2
3
4
docker images ls
# 下面这个是正常输出
REPOSITORY TAG IMAGE ID CREATED SIZE
enmotech/opengauss 5.0.0 c69c8aebefe8 2 years ago 465MB
  1. 创建挂载数据目录
1
mkdir -p /example/opengauss/data
  1. 启动容器,可以根据你的需要修改容器名称(--name 后面的参数),修改数据库密码,修改映射端口(-p参数的冒号前面的端口)
1
2
3
4
5
6
7
8
docker run \
> --name opengauss \
> --privileged=true \
> -d \
> -e GS_PASSWORD=your-password \
> -p 1234:5432 \
> -v /example/opengauss/data:/var/lib/opengauss/data \
> enmotech/opengauss:5.0.0

成功后会输出一长串容器ID(如果成功后又快速退出了也会,这个不代表已经成功了)
7. 查看容器运行状态,如果 STATUS 是 UP,就是启动成功了。如果你看到的是 Exited,那说明启动后又退出了,没有成功跑起来。

1
2
3
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31858d593b66 enmotech/opengauss:5.0.0 "entrypoint.sh gauss…" 2 months ago Up 4 days 0.0.0.0:14869->5432/tcp, :::1234->5432/tcp opengauss
一种可能的错误情况 如果你看到的是 Exited,那说明启动后又退出了,没有成功跑起来。
1
2
3
docker ps -a | grep opengauss
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b87a6e93e3f 478a00294137 "entrypoint.sh" 35 seconds ago Exited (1) 34 seconds ago opengauss

可以用以下命令查看情况:

1
2
# docker logs 容器ID
docker logs 1b876e93e3f

如果你得到的是如下的提示:

Primary host is empty, at least one primary and one standby host are needed

那有可能是你的镜像不支持单节点部署,建议你更换镜像文件

  1. 通过以下命令就可以进入容器了
1
docker exec -it opengauss /bin/bash

如果你觉得这个命令太长,可以配置一个简化命令

1
2
3
4
vim ~/.bashrc
# 添加别名
alias enter-gauss='docker exec -it opengauss /bin/bash'
source ~/.bashrc

以上步骤完成后,你就可以直接使用 enter-gauss 进入容器

  1. openGauss安装时默认会创建omm超级用户,容器内切换到该用户
1
su - omm
  1. 输入 gsql 就可以进入数据库了,之后的赋权操作都需要在此处进行,\q 可以退出数据库
    注意:默认是不允许 omm 用户远程连接数据库的
    可能会提示以下内容:

    Forbid remote connection with initial user.

参考资料