postgresql-95-centos7 Docker 镜像下载 - 轩辕镜像
postgresql-95-centos7 镜像详细信息和使用指南
postgresql-95-centos7 镜像标签列表和版本信息
postgresql-95-centos7 镜像拉取命令和加速下载
postgresql-95-centos7 镜像使用说明和配置指南
Docker 镜像加速服务 - 轩辕镜像平台
国内开发者首选的 Docker 镜像加速平台
极速拉取 Docker 镜像服务
相关 Docker 镜像推荐
热门 Docker 镜像下载
postgresql-95-centos7 镜像详细信息
postgresql-95-centos7 镜像标签列表
postgresql-95-centos7 镜像使用说明
postgresql-95-centos7 镜像拉取命令
Docker 镜像加速服务
轩辕镜像平台优势
镜像下载指南
相关 Docker 镜像推荐
postgresql-95-centos7 镜像详细说明
postgresql-95-centos7 使用指南
postgresql-95-centos7 配置说明
postgresql-95-centos7 官方文档
PostgreSQL 9.5 SQL数据库服务器容器镜像
此容器镜像包含适用于OpenShift和一般用途的PostgreSQL 9.5 SQL数据库服务器。用户可选择基于RHEL或CentOS的基础镜像。RHEL镜像可在Red Hat容器目录获取,镜像名为registry.access.redhat.com/rhscl/postgresql-95-rhel7;CentOS镜像可在Docker Hub获取,镜像名为centos/postgresql-95-centos7。
镜像概述
本容器镜像提供PostgreSQL postgres守护进程和客户端应用的容器化打包。postgres服务器守护进程接受客户端连接,并代表客户端提供对PostgreSQL数据库内容的访问。有关PostgreSQL项目的更多信息,请访问项目官网([***]
使用方法
以下示例使用rhscl/postgresql-95-rhel7镜像。若只需设置必填环境变量且不将数据库存储在主机目录中,执行以下命令:
bash$ docker run -d --name postgresql_database -e POSTGRESQL_USER=user -e POSTGRESQL_PASSWORD=pass -e POSTGRESQL_DATABASE=db -p 5432:5432 rhscl/postgresql-95-rhel7
此命令将创建一个名为postgresql_database的容器,运行PostgreSQL数据库db,用户凭据为user:pass。端口5432将暴露并映射到主机。若需数据库在容器重启后持久化,需添加-v /host/db/path:/var/lib/pgsql/data参数(见下文),该路径为PostgreSQL数据库集群目录。
若数据库集群目录未初始化,入口脚本将首先运行initdb并设置必要的数据库用户和密码。数据库初始化完成后(或已存在时),将执行postgres并以PID 1运行。可通过docker stop postgresql_database停止后台运行的容器。
环境变量和卷
环境变量
可在初始化时通过-e VAR=VALUE参数设置以下环境变量:
POSTGRESQL_USER
数据库用户名称(必填)
POSTGRESQL_PASSWORD
用户密码(必填)
POSTGRESQL_DATABASE
数据库名称(必填)
POSTGRESQL_ADMIN_PASSWORD
postgres管理员账户密码(可选)
迁移相关变量
POSTGRESQL_MIGRATION_REMOTE_HOST
迁移源主机名/IP
POSTGRESQL_MIGRATION_ADMIN_PASSWORD
远程postgres管理员密码
POSTGRESQL_MIGRATION_IGNORE_ERRORS(可选,默认no)
设为yes可忽略SQL导入错误
配置相关变量(均为可选)
POSTGRESQL_MAX_CONNECTIONS(默认:100)
允许的最大客户端连接数
POSTGRESQL_MAX_PREPARED_TRANSACTIONS(默认:0)
可处于"预备"状态的最大事务数。若使用预备事务,建议至少设为与max_connections相同
POSTGRESQL_SHARED_BUFFERS(默认:32M)
PostgreSQL用于缓存数据的内存大小
POSTGRESQL_EFFECTIVE_CACHE_SIZE(默认:128M)
操作系统和数据库内可用于磁盘缓存的内存估计值
卷挂载
可通过-v /host/dir:/container/dir:Z参数挂载以下目录:
/var/lib/pgsql/data
PostgreSQL数据库集群目录
注意:从主机挂载目录到容器时,需确保挂载目录具有适当权限,且目录的所有者和组与容器内运行的用户UID或名称匹配。
通常(除非使用docker run -u选项),容器内进程以UID 26运行。在GNU/Linux系统上,可通过以下命令修复数据目录权限:bash$ setfacl -m u:26:-wx /your/data/dir $ docker run <...> -v /your/data/dir:/var/lib/pgsql/data:Z <...>
数据迁移
PostgreSQL容器支持从远程PostgreSQL服务器迁移数据。迁移命令示例:
bash$ docker run -d --name postgresql_database \ -e POSTGRESQL_MIGRATION_REMOTE_HOST=172.17.0.2 \ -e POSTGRESQL_MIGRATION_ADMIN_PASSWORD=remoteAdminP@ssword \ [可选配置变量] openshift/postgresql-92-centos7
迁移通过转储和恢复方式实现(对远程集群运行pg_dumpall并通过psql本地导入)。由于过程流式传输(Unix管道),不会创建中间转储文件以节省存储空间。
默认情况下,若迁移过程中SQL命令失败,迁移脚本将终止以确保全有或全无的迁移结果。通常,从基于相同原理创建的旧版PostgreSQL容器(如从openshift/postgresql-92-centos7迁移到centos/postgresql-95-centos7)可成功迁移,但不保证。从其他类型的PostgreSQL容器迁移可能失败。
若"全有或全无"原则不适用且了解风险,可设置POSTGRESQL_MIGRATION_IGNORE_ERRORS进行尽力而为的迁移(可能丢失数据,需用户检查错误输出并手动修复)。
注意:容器镜像仅提供便利工具,不保证完全自动迁移。迁移前请确保已备份数据并准备手动干预。迁移时无需设置
POSTGRESQL_USER等变量,所有数据(包括数据库、角色、密码)均从旧集群复制。需确保使用与旧容器相同的可选配置变量,若远程集群有非默认配置,可能需手动复制配置文件。
安全警告:新旧集群间的IP通信默认不加密,需用户配置SSL或通过其他方式确保安全。
PostgreSQL自动调优
当容器以--memory参数运行,且未设置POSTGRESQL_SHARED_BUFFERS和POSTGRESQL_EFFECTIVE_CACHE_SIZE时,这两个值将基于--memory参数自动计算:
shared_buffers:内存的1/4effective_cache_size:内存的1/2
计算依据参考上游文档。
PostgreSQL管理员账户
默认情况下,postgres管理员账户无密码,仅允许本地连接。可在初始化容器时通过POSTGRESQL_ADMIN_PASSWORD环境变量设置密码,允许远程登录。本地连接仍无需密码。
修改密码
数据库用户(POSTGRESQL_USER)和postgres管理员账户的密码仅支持通过环境变量POSTGRESQL_PASSWORD和POSTGRESQL_ADMIN_PASSWORD修改。通过SQL语句或其他方式修改密码将导致环境变量值与实际密码不匹配,容器启动时会将密码重置为环境变量值。
升级数据库(切换到新版本PostgreSQL镜像)
警告:升级数据目录前,务必确保已备份所有数据并准备手动回滚!
本镜像支持自动升级由sclorg镜像提供的PostgreSQL 9.4版本(仅此版本)的数据目录。升级需切换到新版本镜像,并设置POSTGRESQL_UPGRADE变量显式请求数据转换。
升级内部通过pg_upgrade实现,容器需包含两个版本的PostgreSQL服务器(详见man pg_upgrade)。升级过程需初始化全新数据目录(自动在/var/lib/pgsql/data创建,通常为外部挂载点),通过启动新旧服务器并"转储-恢复"数据实现,需大量复制文件。可通过POSTGRESQL_UPGRADE指定升级方式:
copy
数据文件从旧目录复制到新目录。升级失败时数据丢失风险低。
hardlink
数据文件通过硬链接从旧目录关联到新目录,性能更优,但升级失败时旧目录将不可用。
注意:升级需足够存储空间,空间不足可能导致数据丢失。
扩展镜像
可通过source-to-image扩展本镜像。例如,使用~/image-configuration/中的配置构建自定义镜像new-postgresql:
bash$ s2i build ~/image-configuration/ postgresql new-postgresql
传递给s2i build的目录可包含以下一个或多个子目录:
postgresql-pre-start/
容器启动初期(PostgreSQL守护进程未运行时)会加载此目录下的所有*.sh文件。
postgresql-cfg/
此目录下的配置文件(*.conf)将被包含在镜像的postgresql.conf文件末尾。
postgresql-init/
数据库首次初始化(initdb成功后数据目录非空)时,会加载此目录下的shell脚本(*.sh)。加载时本地PostgreSQL服务器已运行。对于持久化数据目录的重新部署,脚本不会加载(无操作)。
postgresql-start/
语义与postgresql-init/相同,但始终加载(在postgresql-init/脚本之后,若存在)。
构建过程中,所有文件会复制到新镜像的
/opt/app-root/src目录。同名文件用户提供的版本优先于/usr/share/container-scripts/中的默认文件,可覆盖默认配置。
故障排除
PostgreSQL守护进程初期将日志输出到标准输出,可通过以下命令查看容器日志:
bashdocker logs <container>
之后日志会重定向到日志收集进程,存储在pg_log目录。
参见
此容器镜像的Dockerfile及源码可在[***]Dockerfile,RHEL的Dockerfile名为Dockerfile.rhel7。
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务
常见问题
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
轩辕镜像下载加速使用手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
登录仓库拉取
通过 Docker 登录认证访问私有仓库
Linux
在 Linux 系统配置镜像加速服务
Windows/Mac
在 Docker Desktop 配置镜像加速
Docker Compose
Docker Compose 项目配置加速
K8s Containerd
Kubernetes 集群配置 Containerd
宝塔面板
在宝塔面板一键配置镜像加速
群晖
Synology 群晖 NAS 配置加速
飞牛
飞牛 fnOS 系统配置镜像加速
极空间
极空间 NAS 系统配置加速服务
爱快路由
爱快 iKuai 路由系统配置加速
绿联
绿联 NAS 系统配置镜像加速
威联通
QNAP 威联通 NAS 配置加速
Podman
Podman 容器引擎配置加速
Singularity/Apptainer
HPC 科学计算容器配置加速
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
专属域名拉取
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429