本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

postgresql-95-centos7 Docker 镜像下载 - 轩辕镜像

postgresql-95-centos7 镜像详细信息和使用指南

postgresql-95-centos7 镜像标签列表和版本信息

postgresql-95-centos7 镜像拉取命令和加速下载

postgresql-95-centos7 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

postgresql-95-centos7
centos/postgresql-95-centos7

postgresql-95-centos7 镜像详细信息

postgresql-95-centos7 镜像标签列表

postgresql-95-centos7 镜像使用说明

postgresql-95-centos7 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

PostgreSQL 9.5 SQL数据库服务器容器镜像,适用于OpenShift和一般用途,支持基于RHEL或CentOS的基础镜像,提供容器化的PostgreSQL守护进程和客户端应用。
5 收藏0 次下载activecentos镜像

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_BUFFERSPOSTGRESQL_EFFECTIVE_CACHE_SIZE时,这两个值将基于--memory参数自动计算:

  • shared_buffers:内存的1/4
  • effective_cache_size:内存的1/2
    计算依据参考上游文档。

PostgreSQL管理员账户

默认情况下,postgres管理员账户无密码,仅允许本地连接。可在初始化容器时通过POSTGRESQL_ADMIN_PASSWORD环境变量设置密码,允许远程登录。本地连接仍无需密码。

修改密码

数据库用户(POSTGRESQL_USER)和postgres管理员账户的密码仅支持通过环境变量POSTGRESQL_PASSWORDPOSTGRESQL_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守护进程初期将日志输出到标准输出,可通过以下命令查看容器日志:

bash
docker logs <container>

之后日志会重定向到日志收集进程,存储在pg_log目录。

参见

此容器镜像的Dockerfile及源码可在[***]Dockerfile,RHEL的Dockerfile名为Dockerfile.rhel7

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"