PostgreSQL(Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它支持ACID事务、外键、连接、视图、触发器和存储过程。
PostgreSQL 概述
商标说明:本软件列表由Bitnami打包。所提及的相关商标归各自公司所有,使用这些商标并不意味着任何关联或背书。
consoledocker run --name postgresql REGISTRY_NAME/bitnami/postgresql:latest
警告:此快速设置仅适用于开发环境。建议您更改不安全的默认凭据,并查看配置部分中的可用配置选项,以实现更安全的部署。
仅部分 BSI 应用可免费使用。想要访问完整的应用目录并获得企业支持?立即尝试 Bitnami 安全镜像商业版。
将 Bitnami 应用部署为 Helm 图表是在 Kubernetes 上使用我们应用的最简单方法。有关安装详情,请参阅 Bitnami PostgreSQL Chart GitHub 仓库。
非 root 容器镜像增加了额外的安全层,通常推荐用于生产环境。然而,由于它们以非 root 用户运行,通常无法执行特权任务。在我们的文档中了解更多关于非 root 容器的信息 in our docs。
Dockerfile 链接了解更多关于 Bitnami 标签策略以及滚动标签和不可变标签之间的区别,请参阅我们的文档页面 in our documentation page。
您可以通过查看分支文件夹中的 tags-info.yaml 文件(即 bitnami/ASSET/BRANCH/DISTRO/tags-info.yaml)来了解不同标签之间的对应关系。
通过关注 bitnami/containers GitHub 仓库 订阅项目更新。
获取 Bitnami PostgreSQL Docker 镜像的推荐方式是从 Docker Hub registry 拉取预构建镜像。
consoledocker pull REGISTRY_NAME/bitnami/postgresql:latest
要使用特定版本,您可以拉取带版本的标签。您可以在 Docker Hub Registry 中查看 可用版本列表。
consoledocker pull REGISTRY_NAME/bitnami/postgresql:[TAG]
如果需要,您也可以通过克隆仓库、进入包含 Dockerfile 的目录并执行 docker build 命令来自行构建镜像。请记住在下面的示例命令中用正确的值替换 APP、VERSION 和 OPERATING-SYSTEM 路径占位符。
consolegit clone [***] cd bitnami/APP/VERSION/OPERATING-SYSTEM docker build -t REGISTRY_NAME/bitnami/APP:latest .
如果删除容器,所有数据和配置都将丢失,下次运行镜像时数据库将重新初始化。为避免数据丢失,您应该挂载一个即使容器被删除后仍能保留的卷。
要实现持久化,您应该在 /bitnami/postgresql 路径挂载一个目录。如果挂载的目录为空,将在首次运行时初始化。
consoledocker run \ -v /path/to/postgresql-persistence:/bitnami/postgresql \ REGISTRY_NAME/bitnami/postgresql:latest
或修改此仓库中提供的 docker-compose.yml 文件:
yamlservices: postgresql: ... volumes: - /path/to/postgresql-persistence:/bitnami/postgresql ...
注意:由于这是一个非 root 容器,挂载的文件和目录必须对 UID
1001具有适当的权限。
使用 Docker 容器网络,在容器内运行的 PostgreSQL 服务器可以轻松被您的应用容器访问。
连接到同一网络的容器可以使用容器名称作为主机名进行通信。
在此示例中,我们将创建一个 PostgreSQL 客户端实例,该实例将连接到与客户端在同一 Docker 网络上运行的服务器实例。
consoledocker network create app-tier --driver bridge
使用 --network app-tier 参数执行 docker run 命令,将 PostgreSQL 容器附加到 app-tier 网络。
consoledocker run -d --name postgresql-server \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest
最后,我们创建一个新的容器实例来启动 PostgreSQL 客户端并连接到上一步创建的服务器:
consoledocker run -it --rm \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest psql -h postgresql-server -U postgres
如果未指定,Docker Compose 会自动设置一个新网络并将所有部署的服务附加到该网络。但是,我们将显式定义一个名为 app-tier 的新 bridge 网络。在此示例中,假设您希望从自己的自定义应用镜像(在以下代码段中由服务名称 myapp 标识)连接到 PostgreSQL 服务器。
yamlversion: '2' networks: app-tier: driver: bridge services: postgresql: image: REGISTRY_NAME/bitnami/postgresql:latest networks: - app-tier myapp: image: YOUR_APPLICATION_IMAGE networks: - app-tier
重要:
- 请将上述代码段中的 YOUR_APPLICATION_IMAGE 占位符更新为您的应用镜像
- 在应用容器中,使用主机名
postgresql连接到 PostgreSQL 服务器
使用以下命令启动容器:
consoledocker-compose up -d
| 名称 | 描述 | 默认值 |
|---|---|---|
POSTGRESQL_VOLUME_DIR | 持久化基础目录 | /bitnami/postgresql |
POSTGRESQL_DATA_DIR | PostgreSQL 数据目录 | ${POSTGRESQL_VOLUME_DIR}/data |
POSTGRESQL_EXTRA_FLAGS | PostgreSQL 初始化额外标志 | nil |
POSTGRESQL_INIT_MAX_TIMEOUT | 最大初始化等待超时时间 | 60 |
POSTGRESQL_PGCTLTIMEOUT | pg_ctl 命令的最大等待超时时间 | 60 |
POSTGRESQL_SHUTDOWN_MODE | pg_ctl stop 命令的默认模式 | fast |
POSTGRESQL_CLUSTER_APP_NAME | 复制集群默认应用名称 | walreceiver |
POSTGRESQL_DATABASE | 默认 PostgreSQL 数据库 | postgres |
POSTGRESQL_INITDB_ARGS | PostgreSQL initdb 操作的可选参数 | nil |
ALLOW_EMPTY_PASSWORD | 允许无密码访问 | no |
POSTGRESQL_INITDB_WAL_DIR | 可选的 init db wal 目录 | nil |
POSTGRESQL_MASTER_HOST | PostgreSQL 主节点主机(从节点使用) | nil |
POSTGRESQL_MASTER_PORT_NUMBER | PostgreSQL 主节点端口(从节点使用) | 5432 |
POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS | 应使用同步复制的 PostgreSQL 副本数量 | 0 |
POSTGRESQL_SYNCHRONOUS_REPLICAS_MODE | PostgreSQL 同步复制模式(值:empty、FIRST、ANY) | nil |
POSTGRESQL_PORT_NUMBER | PostgreSQL 端口号 | 5432 |
POSTGRESQL_ALLOW_REMOTE_CONNECTIONS | 修改 pg_hba 设置以允许外部用户访问 | yes |
POSTGRESQL_REPLICATION_MODE | PostgreSQL 复制模式(值:master、slave) | master |
POSTGRESQL_REPLICATION_USER | PostgreSQL 复制用户 | nil |
POSTGRESQL_REPLICATION_USE_PASSFILE | 使用 PGPASSFILE 而非 PGPASSWORD | no |
POSTGRESQL_REPLICATION_PASSFILE_PATH | 密码文件存储路径 | ${POSTGRESQL_CONF_DIR}/.pgpass |
POSTGRESQL_SR_CHECK | 为流复制检查在 PostgreSQL 上创建用户 | no |
POSTGRESQL_SR_CHECK_USERNAME | 流复制检查用户 | sr_check_user |
POSTGRESQL_SR_CHECK_DATABASE | 流复制检查数据库 | postgres |
POSTGRESQL_SYNCHRONOUS_COMMIT_MODE | 在从节点启用同步复制(数量由 POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS 定义) | on |
POSTGRESQL_FSYNC | 启用预写日志的 fsync | on |
POSTGRESQL_USERNAME | PostgreSQL 默认用户名 | postgres |
POSTGRESQL_ENABLE_LDAP | 为 PostgreSQL 身份验证启用 LDAP | no |
POSTGRESQL_LDAP_URL | PostgreSQL LDAP 服务器 URL(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_PREFIX | PostgreSQL LDAP 前缀(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SUFFIX | PostgreSQL LDAP 后缀(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SERVER | PostgreSQL LDAP 服务器(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_PORT | PostgreSQL LDAP 端口(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SCHEME | PostgreSQL LDAP 方案(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_TLS | PostgreSQL LDAP TLS 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BASE_DN | PostgreSQL LDAP 基础 DN 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BIND_DN | PostgreSQL LDAP 绑定 DN 设置(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_BIND_PASSWORD | PostgreSQL LDAP 绑定密码(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SEARCH_ATTR | PostgreSQL LDAP 搜索属性(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_LDAP_SEARCH_FILTER | PostgreSQL LDAP 搜索过滤器(需要 POSTGRESQL_ENABLE_LDAP=yes) | nil |
POSTGRESQL_INITSCRIPTS_USERNAME | /docker-entrypoint.initdb 中包含的 psql 脚本的用户名 | $POSTGRESQL_USERNAME |
POSTGRESQL_PASSWORD | PostgreSQL 创建用户的密码 | nil |
POSTGRESQL_POSTGRES_PASSWORD | PostgreSQL postgres 用户的密码 | nil |
POSTGRESQL_REPLICATION_PASSWORD | PostgreSQL 复制用户的密码 | nil |
POSTGRESQL_SR_CHECK_PASSWORD | 流复制检查用户的密码 | nil |
POSTGRESQL_INITSCRIPTS_PASSWORD | PostgreSQL 初始化脚本用户的密码 | $POSTGRESQL_PASSWORD |
POSTGRESQL_ENABLE_TLS | 是否为流量启用 TLS | no |
POSTGRESQL_TLS_CERT_FILE | 包含 TLS 流量证书的文件 | nil |
POSTGRESQL_TLS_KEY_FILE | 包含证书密钥的文件 | nil |
POSTGRESQL_TLS_CA_FILE | 包含证书 CA 的文件 | nil |
POSTGRESQL_TLS_CRL_FILE | 包含证书吊销列表的文件 | nil |
POSTGRESQL_TLS_PREFER_SERVER_CIPHERS | 是否使用服务器 TLS 密码套件偏好而非客户端 | yes |
POSTGRESQL_SHARED_PRELOAD_LIBRARIES | PostgreSQL 初始化时预加载的库列表 | pgaudit |
POSTGRESQL_PGAUDIT_LOG | pgaudit 要记录的操作的逗号分隔列表 | nil |
POSTGRESQL_PGAUDIT_LOG_CATALOG | 启用 pgaudit 日志目录(pgaudit.log_catalog 设置) | nil |
POSTGRESQL_PGAUDIT_LOG_PARAMETER | 启用 pgaudit 日志参数(pgaudit.log_parameter 设置) | nil |
POSTGRESQL_LOG_CONNECTIONS | 每个用户连接添加日志条目 | nil |
POSTGRESQL_LOG_DISCONNECTIONS | 每个用户断开连接添加日志条目 | nil |
POSTGRESQL_LOG_HOSTNAME | 访问时记录客户端主机名 | nil |
POSTGRESQL_CLIENT_MIN_MESSAGES | 设置发送到客户端的错误日志级别 | error |
POSTGRESQL_LOG_LINE_PREFIX | 设置日志行的格式 | nil |
POSTGRESQL_LOG_TIMEZONE | 设置日志时区 | nil |
POSTGRESQL_TIMEZONE | 设置时区 | nil |
POSTGRESQL_MAX_CONNECTIONS | 设置最大连接数 | nil |
POSTGRESQL_TCP_KEEPALIVES_IDLE | 设置 TCP 保活空闲时间 | nil |
POSTGRESQL_TCP_KEEPALIVES_INTERVAL | 设置 TCP 保活间隔时间 | nil |
POSTGRESQL_TCP_KEEPALIVES_COUNT | 设置 TCP 保活计数 | nil |
POSTGRESQL_STATEMENT_TIMEOUT | 设置 SQL 语句超时时间 | nil |
POSTGRESQL_PGHBA_REMOVE_FILTERS | 用于删除 pg_hba.conf 行的逗号分隔字符串列表(例如:md5、local) | nil |
POSTGRESQL_USERNAME_CONNECTION_LIMIT | 设置用户连接限制 | nil |
POSTGRESQL_POSTGRES_CONNECTION_LIMIT | 设置 |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429