Skip to content

Docker 构建 OpenGauss 数据库镜像(测试未通过,有问题)

shell
# 临时使用别人的镜像
docker pull enmotech/opengauss:6.0.0

# 启动
docker run --name opengauss --privileged=true -d \
-e GS_PASSWORD=Secretpassword@123 \
-p 5432:5432 enmotech/opengauss:6.0.0

# 挂载卷
docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Secretpassword@123 \
-v /enmotech/opengauss:/var/lib/opengauss  -u root -p 5432:5432 \
enmotech/opengauss:6.0.0
  • 默认节点名:gaussdb
  • 默认用户名:超级用户 omm;测试用户 gaussdb
  • 默认端口:5432

使用 postgres 的驱动连接时,数据库为 postgres。


使用 buildDockerImage.sh 构建 openGauss Docker 镜像指南

先去官网看下版本号,这里用 6.0.1 极简版.

环境准备

去代码仓库下载指定版本的代码:https://gitee.com/opengauss/openGauss-server/tags

下载后,上传值 /home 目录。

shell
cd /home

unzip openGauss-server-v6.0.1.zip

cd /home/openGauss-server-v6.0.1/docker/dockerfiles

# 把默认的 5.0.0 的文件夹复制为 6.0.1
cp -r 5.0.0 6.0.1

cd 6.0.1

# 查看当前主机的系统架构
uname -a

# 先执行一下这个,看下用的哪个 dockerfile
sh buildDockerImage.sh -v 6.0.1 -i

=> [internal] load build definition from dockerfile_amd
=> [internal] load metadata for docker.io/library/centos:7.6.1810 
=> ERROR [2/8] COPY openGauss-5.0.0-CentOS-64bit.tar.bz2 .

根据执行信息可知:

  1. 用的 dockerfile_amd
  2. 用的 centos:7.6.1810
  3. 执行过程中缺少 openGauss-5.0.0-CentOS-64bit.tar.bz2 数据库包

但我们要使用 6.0.1 版本,这时候就需要修改一下 dockerfile_amd 中的内容。

先下载数据库包

确保已安装 Docker 并配置镜像加速器。

openGauss 二进制包:从 opengauss 官网 下载对应版本(如 openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2),需与脚本版本一致 。

注意下载极简版,官方文档中只用极简版有 docker 单机版构建教程。

shell
cd /home/openGauss-server-v6.0.1/docker/dockerfiles/6.0.1

# 这里直接下载文件到 dockerfiles/6.0.1 目录下
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/6.0.1/openEuler20.03/arm/openGauss-Server-6.0.1-openEuler20.03-aarch64.tar.bz2

注:openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2 文件需要放到 dockerfiles/X.X.X/ 目录(如 6.0.1)下。

修改 dockerfile_amd 内容

shell
# 将【FROM openeuler-20.03-lts:latest】修改为下面的:
FROM openeuler/openeuler:20.03

# 把 dockerfile_amd 文件中所有的【COPY openGauss-5.0.0-CentOS-64bit.tar.bz2 .】修改为:
# 大约有 3 处修改
COPY openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2 .

构建

shell
cd /home/openGauss-server-v6.0.1/docker/dockerfiles

# x86_64 示例
# -i:跳过 SHA256 检查 。
sh buildDockerImage.sh -v 6.0.1 -i

# ARM64 需额外参数
# sh buildDockerImage.sh -v 6.0.1 -i -a aarch64

容器启动与配置

shell
docker run --name opengauss --privileged -d \
-p 5432:5432 \
-e GS_PASSWORD=YourPassword123# \
-v /host/data:/var/lib/opengauss \
opengauss:6.0.1
  • 密码要求:8 位以上,含大小写字母、数字及特殊符号(如 #?!@$%^&*-)。
  • 数据卷映射:建议挂载 /var/lib/opengauss 目录持久化数据 。

连接数据库

容器内直接连接(无需密码)

shell
docker exec -it opengauss bash
su - omm
gsql -d postgres

外部连接(需密码)

shell
gsql -h 宿主机 IP -p 5432 -U omm -W YourPassword123# -d postgres