本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
PostgreSQL(简称Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它符合ACID标准,支持外键、连接、视图、触发器和存储过程。Bitnami PostgreSQL镜像为PostgreSQL提供了预配置、随时可用的容器化部署方案,优化了安全性和易用性,适用于开发、测试和生产环境。
PostgreSQL 官方概述
商标说明:本软件列表由Bitnami打包。所提及的商标分属各自公司所有,使用这些商标不意味着任何关联或背书。
# 简单启动(非持久化,仅用于测试) docker run --name postgresql -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 bitnami/postgresql:latest # 持久化启动(数据保存在宿主机目录) docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRES_USER=myuser \ -e POSTGRES_DB=mydb \ -v /path/on/host:/bitnami/postgresql \ -p 5432:5432 \ bitnami/postgresql:latest
version: '3' services: postgresql: image: bitnami/postgresql:latest ports: - "5432:5432" environment: - POSTGRES_PASSWORD=mysecretpassword - POSTGRES_USER=myuser - POSTGRES_DB=mydb - POSTGRES_INITDB_ARGS=--encoding=UTF8 volumes: - postgresql_data:/bitnami/postgresql networks: - postgres_network networks: postgres_network: driver: bridge volumes: postgresql_data: driver: local
自2025年8月28日起,Bitnami将升级其公共镜像仓库,通过新的Bitnami Secure Images计划提供精选的加固、安全聚焦镜像。此次变更包括:
这些变更旨在通过推广软件供应链完整性最佳实践和最新部署,提升所有Bitnami用户的安全态势。更多详情参见Bitnami Secure Images公告。
docker run --name postgresql \ -e POSTGRES_PASSWORD=StrongPassword123 \ # 数据库管理员密码 -e POSTGRES_USER=appuser \ # 应用数据库用户 -e POSTGRES_DB=appdb \ # 应用数据库名称 -e POSTGRES_INITDB_ARGS="--auth-host=scram-sha-256" \ # 初始化参数 -p 5432:5432 \ # 端口映射 -v postgres_data:/bitnami/postgresql \ # 持久化卷 bitnami/postgresql:latest
| 环境变量 | 描述 | 默认值 |
|---|---|---|
POSTGRES_PASSWORD | postgres管理员密码 | 随机生成 |
POSTGRES_USER | 应用数据库用户名 | postgres |
POSTGRES_DB | 初始数据库名称 | 与POSTGRES_USER相同 |
POSTGRES_INITDB_ARGS | initdb命令额外参数 | "" |
ALLOW_EMPTY_PASSWORD | 是否允许空密码(仅开发环境) | no |
REPLICATION_MODE | 复制模式(master/slave) | "" |
REPLICATION_USER | 复制用户名称 | repl_user |
REPLICATION_PASSWORD | 复制用户密码 | 随机生成 |
PostgreSQL数据默认存储在容器内/bitnami/postgresql路径。为确保数据持久化,需挂载宿主机目录或Docker卷:
# 使用宿主机目录 docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /host/path/to/postgres/data:/bitnami/postgresql \ bitnami/postgresql:latest # 使用Docker命名卷(推荐) docker volume create postgres_data docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ bitnami/postgresql:latest
docker run --name postgresql-master \ -e POSTGRES_PASSWORD=masterpassword \ -e REPLICATION_MODE=master \ -e REPLICATION_USER=repluser \ -e REPLICATION_PASSWORD=replpassword \ -v master_data:/bitnami/postgresql \ --network postgres-net \ bitnami/postgresql:latest
docker run --name postgresql-slave \ -e POSTGRES_PASSWORD=masterpassword \ # 需与主节点相同 -e REPLICATION_MODE=slave \ -e REPLICATION_USER=repluser \ -e REPLICATION_PASSWORD=replpassword \ -e REPLICATION_HOST=postgresql-master \ # 主节点容器名称或IP -e REPLICATION_PORT=5432 \ -v slave_data:/bitnami/postgresql \ --network postgres-net \ bitnami/postgresql:latest
使用POSTGRESQL_EXTRA_FLAGS添加运行时参数:
docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e POSTGRESQL_EXTRA_FLAGS="-c max_connections=200 -c shared_buffers=256MB" \ bitnami/postgresql:latest
挂载自定义postgresql.conf或pg_hba.conf:
docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /host/path/to/postgresql.conf:/opt/bitnami/postgresql/conf/postgresql.conf \ -v /host/path/to/pg_hba.conf:/opt/bitnami/postgresql/conf/pg_hba.conf \ bitnami/postgresql:latest
启用LDAP认证需配置以下环境变量:
docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e LDAP_ENABLED=true \ -e LDAP_URI=ldap://ldap-server:389 \ # LDAP服务器URI -e LDAP_BASE=dc=example,dc=org \ # LDAP基础DN -e LDAP_BINDDN=cn=admin,dc=example,dc=org \ # 绑定DN -e LDAP_BINDPW=ldapadminpassword \ # 绑定密码 -e LDAP_SCOPE=sub \ # 搜索范围 bitnami/postgresql:latest
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \ -keyout server.key -out server.crt \ -subj "/CN=postgresql.example.com"
docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e TLS_ENABLED=true \ -v $(pwd)/server.crt:/opt/bitnami/postgresql/certs/server.crt \ -v $(pwd)/server.key:/opt/bitnami/postgresql/certs/server.key \ -e TLS_CERT_FILE=/opt/bitnami/postgresql/certs/server.crt \ -e TLS_KEY_FILE=/opt/bitnami/postgresql/certs/server.key \ bitnami/postgresql:latest
启用Prometheus指标导出器:
docker run --name postgresql \ -e POSTGRES_PASSWORD=mysecretpassword \ -e METRICS_ENABLED=true \ # 启用指标 -e METRICS_EXPORTER_USER=exporter \ # 指标用户 -e METRICS_EXPORTER_PASSWORD=exporterpass \# 指标用户密码 -p 5432:5432 -p 9187:9187 \ # 暴露指标端口(9187) bitnami/postgresql:latest
指标可通过http://localhost:9187/metrics访问。
helm install my-postgres oci://registry-1.docker.io/bitnamicharts/postgresql \ --set auth.postgresPassword=StrongPassword123 \ --set primary.persistence.size=10Gi \ --set metrics.enabled=true
| 参数 | 描述 | 默认值 |
|---|---|---|
auth.postgresPassword | postgres管理员密码 | 随机生成 |
auth.username | 应用用户名 | postgres |
primary.persistence.size | 主节点PVC大小 | 8Gi |
readReplicas.replicaCount | 从节点数量 | 1 |
metrics.enabled | 是否启用Prometheus指标 | false |
tls.enabled | 是否启用TLS | false |
# 备份数据库 docker exec postgresql pg_dump -U postgres appdb > backup.sql # 恢复数据库 cat backup.sql | docker exec -i postgresql psql -U postgres -d appdb
使用Velero工具备份PV数据:
# 备份PostgreSQL命名空间 velero backup create postgres-backup --include-namespaces postgres # 恢复到目标集群 velero restore create --from-backup postgres-backup
| 特性 | Bitnami镜像 | Docker官方镜像 |
|---|---|---|
| 用户权限 | 默认非root用户运行 | root用户运行 |
| 复制支持 | 内置主从复制配置 | 需手动配置 |
| 安全加固 | 符合容器安全最佳实践(非root、最小权限) | 基础配置,需手动加固 |
| OpenShift兼容性 | 支持(自动调整权限) | 需额外配置 |
| 配置灵活性 | 丰富的环境变量和配置选项 | 基础环境变量支持 |
# 停止旧容器 docker stop postgresql # 备份数据(关键步骤) docker run --rm -v postgres_data:/source -v $(pwd):/backup alpine tar -czf /backup/postgres_backup.tar.gz -C /source . # 启动新版本容器 docker run --name postgresql-new \ -e POSTGRES_PASSWORD=mysecretpassword \ -v postgres_data:/bitnami/postgresql \ bitnami/postgresql:16 # 指定新版本标签 # 验证后重命名 docker rm postgresql && docker rename postgresql-new postgresql
pg_upgrade工具bitnami/postgresqlBitnami镜像默认使用非root用户(UID 1001),挂载宿主机目录时需确保权限正确:
chown -R 1001:1001 /host/path/to/postgres/data
生产环境建议:
ALLOW_EMPTY_PASSWORD=noTLS_ENABLED=trueOpenShift 4.11+:
helm install my-postgres oci://registry-1.docker.io/bitnamicharts/postgresql \ --set primary.podSecurityContext.fsGroup=null \ --set primary.containerSecurityContext.runAsUser=null \ --set volumePermissions.enabled=false
免费版仅支持 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