本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
PostgreSQL(Postgres)是一款开源对象关系型数据库,以可靠性和数据完整性著称。它支持ACID事务、外键、连接、视图、触发器和存储过程。
PostgreSQL 概述
商标说明:本软件列表由Bitnami打包。所提及的相关商标归各自公司所有,使用这些商标并不意味着任何关联或背书。
docker 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 拉取预构建镜像。
docker pull REGISTRY_NAME/bitnami/postgresql:latest
要使用特定版本,您可以拉取带版本的标签。您可以在 Docker Hub Registry 中查看 可用版本列表。
docker pull REGISTRY_NAME/bitnami/postgresql:[TAG]
如果需要,您也可以通过克隆仓库、进入包含 Dockerfile 的目录并执行 docker build 命令来自行构建镜像。请记住在下面的示例命令中用正确的值替换 APP、VERSION 和 OPERATING-SYSTEM 路径占位符。
git clone [***] cd bitnami/APP/VERSION/OPERATING-SYSTEM docker build -t REGISTRY_NAME/bitnami/APP:latest .
如果删除容器,所有数据和配置都将丢失,下次运行镜像时数据库将重新初始化。为避免数据丢失,您应该挂载一个即使容器被删除后仍能保留的卷。
要实现持久化,您应该在 /bitnami/postgresql 路径挂载一个目录。如果挂载的目录为空,将在首次运行时初始化。
docker run \ -v /path/to/postgresql-persistence:/bitnami/postgresql \ REGISTRY_NAME/bitnami/postgresql:latest
或修改此仓库中提供的 docker-compose.yml 文件:
services: postgresql: ... volumes: - /path/to/postgresql-persistence:/bitnami/postgresql ...
注意:由于这是一个非 root 容器,挂载的文件和目录必须对 UID
1001具有适当的权限。
使用 Docker 容器网络,在容器内运行的 PostgreSQL 服务器可以轻松被您的应用容器访问。
连接到同一网络的容器可以使用容器名称作为主机名进行通信。
在此示例中,我们将创建一个 PostgreSQL 客户端实例,该实例将连接到与客户端在同一 Docker 网络上运行的服务器实例。
docker network create app-tier --driver bridge
使用 --network app-tier 参数执行 docker run 命令,将 PostgreSQL 容器附加到 app-tier 网络。
docker run -d --name postgresql-server \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest
最后,我们创建一个新的容器实例来启动 PostgreSQL 客户端并连接到上一步创建的服务器:
docker run -it --rm \ --network app-tier \ REGISTRY_NAME/bitnami/postgresql:latest psql -h postgresql-server -U postgres
如果未指定,Docker Compose 会自动设置一个新网络并将所有部署的服务附加到该网络。但是,我们将显式定义一个名为 app-tier 的新 bridge 网络。在此示例中,假设您希望从自己的自定义应用镜像(在以下代码段中由服务名称 myapp 标识)连接到 PostgreSQL 服务器。
version: '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 服务器
使用以下命令启动容器:
docker-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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429