本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
该容器镜像包含PostgreSQL 10 SQL数据库服务器,适用于OpenShift环境及通用场景。用户可选择基于RHEL、CentOS或Fedora的版本:
镜像可通过 podman 运行,也可将命令中的 podman 替换为 docker(参数不变)。
该镜像封装了PostgreSQL的postgres守护进程及客户端工具。postgres守护进程接收客户端连接,并代表客户端提供PostgreSQL数据库的访问服务。更多信息可参考 PostgreSQL官网。
以下示例基于 rhscl/postgresql-10-rhel7 镜像(OpenShift中对应镜像流标签 postgresql:10)。
仅设置必要环境变量,不挂载主机目录(数据仅保存在容器生命周期内):
$ podman run -d --name postgresql_database \ -e POSTGRESQL_USER=user \ # 自定义数据库用户名 -e POSTGRESQL_PASSWORD=pass \ # 自定义用户密码 -e POSTGRESQL_DATABASE=db \ # 自定义数据库名 -p 5432:5432 \ # 映射容器5432端口到主机 rhscl/postgresql-10-rhel7
postgresql_database 的容器,包含数据库 db 及用户 user:pass。postgres 用户为内部保留账户,不可用于自定义。podman stop postgresql_database。若需数据在容器重启后保留,需挂载主机目录到容器内数据库集群目录 /var/lib/pgsql/data:
$ podman run -d --name postgresql_database \ -e POSTGRESQL_USER=user -e POSTGRESQL_PASSWORD=pass -e POSTGRESQL_DATABASE=db \ -p 5432:5432 \ -v /host/db/path:/var/lib/pgsql/data \ # 主机目录映射到容器数据目录 rhscl/postgresql-10-rhel7
可通过OpenShift内置模板或 示例模板 部署,例如:
$ oc process -f examples/postgresql-ephemeral-template.json \ -p POSTGRESQL_VERSION=10 \ -p POSTGRESQL_USER=user \ -p POSTGRESQL_PASSWORD=pass \ -p POSTGRESQL_DATABASE=db \ | oc create -f -
初始化容器时,可通过 -e VAR=VALUE 设置以下环境变量:
POSTGRESQL_USER:需创建的数据库用户名POSTGRESQL_PASSWORD:对应用户的密码POSTGRESQL_DATABASE:需创建的数据库名POSTGRESQL_ADMIN_PASSWORD(可选):postgres 管理员账户密码(默认仅允许本地无密码登录)用于从远程PostgreSQL服务器迁移数据:
POSTGRESQL_MIGRATION_REMOTE_HOST:远程数据库主机名/IPPOSTGRESQL_MIGRATION_ADMIN_PASSWORD:远程 postgres 管理员密码POSTGRESQL_MIGRATION_IGNORE_ERRORS(可选,默认 no):设为 yes 可忽略迁移时的SQL错误影响PostgreSQL配置文件,均有默认值:
POSTGRESQL_MAX_CONNECTIONS:最大客户端连接数(默认100)POSTGRESQL_MAX_PREPARED_TRANSACTIONS:最大预准备事务数(默认0,若使用需≥max_connections)POSTGRESQL_SHARED_BUFFERS:数据库缓存内存(默认32M)POSTGRESQL_EFFECTIVE_CACHE_SIZE:系统+数据库缓存估计值(默认128M)/var/lib/pgsql/data:PostgreSQL数据库集群目录,需持久化时挂载主机目录(如 -v /host/db/path:/var/lib/pgsql/data)。挂载主机目录时,需确保目录权限与容器内运行用户(默认UID 26)匹配。例如,在Linux主机上设置权限:
$ setfacl -m u:26:-wx /your/data/dir # 授予容器内用户对主机目录的读写权限 $ podman run <...> -v /your/data/dir:/var/lib/pgsql/data:Z <...> # 挂载目录
支持从远程PostgreSQL服务器迁移数据,通过 pg_dumpall 远程导出并流式导入本地(无中间文件)。
$ podman run -d --name postgresql_database \ -e POSTGRESQL_MIGRATION_REMOTE_HOST=172.17.0.2 \ # 远程数据库IP/主机名 -e POSTGRESQL_MIGRATION_ADMIN_PASSWORD=remoteAdminP@ssword \ # 远程管理员密码 [其他可选配置变量] \ openshift/postgresql-92-centos7 # 目标镜像
POSTGRESQL_MIGRATION_IGNORE_ERRORS=yes,事后需手动检查日志修复问题。若运行容器时通过 --memory 参数限制内存,且未手动设置 POSTGRESQL_SHARED_BUFFERS 和 POSTGRESQL_EFFECTIVE_CACHE_SIZE,镜像会自动计算这两个值:
shared_buffers = 内存的1/4effective_cache_size = 内存的1/2POSTGRESQL_ADMIN_PASSWORD 环境变量设置密码,允许远程登录(本地连接仍无需密码)。数据库用户(POSTGRESQL_USER)和管理员(postgres)的密码仅支持通过环境变量修改(POSTGRESQL_PASSWORD 和 POSTGRESQL_ADMIN_PASSWORD)。直接通过SQL命令修改会导致环境变量与实际密码不一致,容器重启后会自动重置为环境变量值。
警告:升级前务必备份数据,确保可手动回滚!
该镜像支持自动升级由sclorg PostgreSQL 9.6镜像创建的数据目录,通过 POSTGRESQL_UPGRADE 变量指定升级方式(基于 pg_upgrade 工具):
copy:复制旧数据目录到新目录(安全,升级失败可回滚)。hardlink:硬链接旧数据文件到新目录(速度快,但旧目录会失效,失败无法回滚)。可通过OpenShift的 Source 构建策略或 s2i 工具扩展镜像,自定义启动脚本、配置文件等。
在源码目录中添加以下子目录,构建时会被复制到镜像的 /opt/app-root/src 下(用户文件优先于默认文件):
postgresql-pre-start/:容器启动初期执行的 .sh 脚本(PostgreSQL未运行)。postgresql-cfg/:.conf 配置文件,会追加到 postgresql.conf 末尾。postgresql-init/:数据库首次初始化后执行的 .sh 脚本(仅在数据目录为空时运行)。postgresql-start/:每次容器启动时执行的 .sh 脚本(在 postgresql-init/ 之后运行)。$ s2i build --context-dir examples/extending-image/ \ [***] \ # 源码仓库 rhscl/postgresql-10-rhel7 \ # 基础镜像 new-postgresql # 新镜像名
podman logs <容器名> 查看;之后日志会重定向到容器内 pg_log 目录。镜像的Dockerfile及源码见 GitHub仓库,其中:
DockerfileDockerfile.rhel7Dockerfile.rhel8Dockerfile.fedora免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429