
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
** 注意 :此镜像的描述超出了Hub的25000字符限制,已被截断。完整描述可在https://github.com/docker-library/docs/tree/master/postgres/README.md%E6%9F%A5%E7%9C%8B%E3%80%82%E5%8F%A6%E8%AF%B7%E5%8F%82%E8%A7%81https://github.com/docker/hub-feedback/issues/238%E5%92%8Chttps://github.com/docker/roadmap/issues/475%E3%80%82 注意 **:这是https://hub.docker.com/_/postgres%E7%9A%84%60mips64le%60%E6%9E%B6%E6%9E%84%E6%9E%84%E5%BB%BA%E7%9A%84%E2%80%9C%E6%8C%89%E6%9E%B6%E6%9E%84%E2%80%9D%E4%BB%93%E5%BA%93%E2%80%94%E2%80%94%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%A7%81%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E2%80%9C%E9%99%A4amd64%E4%B9%8B%E5%A4%96%E7%9A%84%E6%9E%B6%E6%9E%84%EF%BC%9F%E2%80%9Dhttps://github.com/docker-library/official-images#architectures-other-than-amd64%E5%92%8C%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8FFAQ%E4%B8%AD%E7%9A%84%E2%80%9C%E9%95%9C%E5%83%8F%E6%BA%90%E5%9C%A8Git%E4%B8%AD%E6%9B%B4%E6%94%B9%E5%90%8E%EF%BC%8C%E8%AF%A5%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F%E2%80%9Dhttps://github.com/docker-library/postgres
-** 获取帮助 **:
https://dockr.ly/comm-slack%E3%80%81Server Fault、https://unix.stackexchange.com/help/on-topic%E6%88%96https://stackoverflow.com/help/on-topic
Dockerfile链接https://github.com/docker-library/postgres/blob/22ca5c8d8e4b37bece4d38dbce1a060583b5308a/18/bookworm/Dockerfile
https://github.com/docker-library/postgres/blob/87e6f65859a53d10c5170a587def1bfc882d3830/17/bookworm/Dockerfile
https://github.com/docker-library/postgres/blob/a2433755c76d294477c85945d68944f8cdb7cf4b/16/bookworm/Dockerfile
https://github.com/docker-library/postgres/blob/a2433755c76d294477c85945d68944f8cdb7cf4b/15/bookworm/Dockerfile
https://github.com/docker-library/postgres/blob/a2433755c76d294477c85945d68944f8cdb7cf4b/14/bookworm/Dockerfile
https://github.com/docker-library/postgres/blob/a2433755c76d294477c85945d68944f8cdb7cf4b/13/bookworm/Dockerfile
-** 提交问题 **:
https://github.com/docker-library/postgres/issues?q=
-** 支持的架构 **:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/postgres/%E3%80%81https://hub.docker.com/r/arm32v5/postgres/%E3%80%81https://hub.docker.com/r/arm32v6/postgres/%E3%80%81https://hub.docker.com/r/arm32v7/postgres/%E3%80%81https://hub.docker.com/r/arm64v8/postgres/%E3%80%81https://hub.docker.com/r/i386/postgres/%E3%80%81https://hub.docker.com/r/mips64le/postgres/%E3%80%81https://hub.docker.com/r/ppc64le/postgres/%E3%80%81https://hub.docker.com/r/riscv64/postgres/%E3%80%81https://hub.docker.com/r/s390x/postgres/
-** 已发布镜像工件详情 **:
https://github.com/docker-library/repo-info/blob/master/repos/postgres%EF%BC%88https://github.com/docker-library/repo-info/commits/master/repos/postgres%EF%BC%89
(镜像元数据、传输大小等)
-** 镜像更新 **:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpostgres
https://github.com/docker-library/official-images/blob/master/library/postgres%EF%BC%88https://github.com/docker-library/official-images/commits/master/library/postgres%EF%BC%89
-** 本描述的来源 **:
https://github.com/docker-library/docs/tree/master/postgres%EF%BC%88https://github.com/docker-library/docs/commits/master/postgres%EF%BC%89
PostgreSQL,通常简称为“Postgres”,是一个对象关系型数据库管理系统(ORDBMS),强调可扩展性和标准合规性。作为数据库服务器,其主要功能是安全地存储数据并支持最佳实践,随后根据其他软件应用程序的请求(无论是同一计算机上的应用程序还是网络上另一台计算机上的应用程序,包括互联网)检索数据。它可以处理从小型单机应用程序到具有大量并发用户的大型互联网应用程序的工作负载。最新版本还提供数据库本身的复制功能,以提高安全性和可扩展性。
PostgreSQL实现了大部分SQL:2011标准,是ACID兼容的事务型数据库(包括大多数DDL语句),使用多版本并发控制(MVCC)避免锁定问题,提供对脏读的免疫和完全可序列化;使用许多其他数据库不具备的索引方法处理复杂SQL查询;具有可更新视图和物化视图、触发器、外键;支持函数和存储过程等扩展功能,并有大量第三方编写的扩展。除了能够与主要的专有和开源数据库协同工作外,PostgreSQL通过其广泛的标准SQL支持和可用的迁移工具,支持从这些数据库迁移。如果使用了专有扩展,其可扩展性可以通过一些内置和第三方开源兼容性扩展(如Oracle兼容扩展)模拟许多功能。
***.org/wiki/PostgreSQL
!https://raw.githubusercontent.com/docker-library/docs/01c***b2fe592c1f93a13b4e289ada0e3a1/postgres/logo.png
console$ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d mips64le/postgres
默认的postgres用户和数据库在入口点通过initdb创建。
postgres数据库是一个默认数据库,供用户、实用程序和第三方应用程序使用。
https://www.postgresql.org/docs/14/app-initdb.html
psqlconsole$ docker run -it --rm --network some-network mips64le/postgres psql -h some-postgres -U postgres psql (14.3) Type "help" for help. postgres=# SELECT 1; ?column? ---------- 1 (1 row)
postgres的compose.yaml示例:
yaml# 使用postgres/example用户/密码凭据 services: db: image: postgres restart: always # 使用docker compose时设置共享内存限制 shm_size: 128mb # 或通过swarm stack部署时设置共享内存限制 #volumes: # - type: tmpfs # target: /dev/shm # tmpfs: # size: 134217728 # 128*2^20字节 = 128Mb environment: POSTGRES_PASSWORD: example adminer: image: adminer restart: always ports: - 8080:8080
运行docker compose up,等待完全初始化后,访问http://localhost:8080或http://host-ip:8080(视情况而定)。
有多种扩展postgres镜像的方法。这里不尝试支持所有可能的用例,仅列举一些我们发现有用的方法。
PostgreSQL镜像使用多个容易被忽略的环境变量。唯一必需的变量是POSTGRES_PASSWORD,其余为可选。
警告:仅当您使用空数据目录启动容器时,Docker特定变量才会生效;容器启动时,任何预先存在的数据库都将保持不变。
POSTGRES_PASSWORD此环境变量是使用PostgreSQL镜像所必需的。它不能为空或未定义。此环境变量设置PostgreSQL的超级用户密码。默认超级用户由POSTGRES_USER环境变量定义。
注意1:PostgreSQL镜像在本地设置trust身份验证,因此您可能会注意到从localhost(同一容器内)连接时不需要密码。但是,如果从不同的主机/容器连接,则需要密码。
注意2:此变量定义PostgreSQL实例中的超级用户密码,由容器初始启动期间的initdb脚本设置。它对运行时psql客户端可能使用的PGPASSWORD环境变量没有影响,如https://www.postgresql.org/docs/14/libpq-envars.html%E6%89%80%E8%BF%B0%E3%80%82%E5%A6%82%E6%9E%9C%E4%BD%BF%E7%94%A8%60PGPASSWORD%60%EF%BC%8C%E5%B0%86%E4%BD%9C%E4%B8%BA%E5%8D%95%E7%8B%AC%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%8C%87%E5%AE%9A%E3%80%82
POSTGRES_USER此可选环境变量与POSTGRES_PASSWORD一起使用,用于设置用户及其密码。此变量将创建具有超级用户权限的指定用户和同名数据库。如果未指定,则使用默认用户postgres。
请注意,如果指定此参数,PostgreSQL在初始化期间仍会显示“The files belonging to this database system will be owned by user "postgres"”。这指的是postgres守护进程运行的Linux系统用户(镜像中/etc/passwd中的用户),因此与POSTGRES_USER选项无关。有关更多详细信息,请参见“任意--user注意事项”部分。
POSTGRES_DB此可选环境变量可用于定义首次启动镜像时创建的默认数据库的不同名称。如果未指定,则使用POSTGRES_USER的值。
POSTGRES_INITDB_ARGS此可选环境变量可用于向postgres initdb发送参数。该值是postgres initdb期望的以空格分隔的参数字符串。这对于添加数据页校验和等功能非常有用:-e POSTGRES_INITDB_ARGS="--data-checksums"。
POSTGRES_INITDB_WALDIR此可选环境变量可用于定义Postgres事务日志的另一个位置。默认情况下,事务日志存储在主Postgres数据文件夹(PGDATA)的子目录中。有时,希望将事务日志存储在不同的目录中,该目录可能由具有不同性能或可靠性特征的存储支持。
注意:在PostgreSQL 9.x上,此变量为POSTGRES_INITDB_XLOGDIR(反映了https://wiki.postgresql.org/wiki/New_in_postgres_10#Renaming_of_.22xlog.22_to_.22wal.22_Globally_.28and_location.2Flsn.29%EF%BC%89%E3%80%82
POSTGRES_HOST_AUTH_METHOD此可选变量可用于控制all数据库、all用户和all地址的host连接的auth-method。如果未指定,则使用https://www.postgresql.org/docs/14/auth-password.html%EF%BC%88%E5%9C%A814+%E7%89%88%E6%9C%AC%E4%B8%AD%EF%BC%9B%E6%97%A7%E7%89%88%E6%9C%AC%E4%B8%AD%E4%B8%BA%60md5%60%EF%BC%89%E3%80%82%E5%9C%A8%E6%9C%AA%E5%88%9D%E5%A7%8B%E5%8C%96%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8A%EF%BC%8C%E8%BF%99%E5%B0%86%E9%80%9A%E8%BF%87%E4%BB%A5%E4%B8%8B%E8%BF%91%E4%BC%BC%E8%A1%8C%E5%A1%AB%E5%85%85%60pg_hba.conf%60%EF%BC%9A
consoleecho "host all all all $POSTGRES_HOST_AUTH_METHOD" >> pg_hba.conf
有关可能的值及其含义的更多信息,请参见PostgreSQL文档中的https://www.postgresql.org/docs/14/auth-pg-hba-conf.html%E3%80%82
注意1:不建议使用trust,因为它允许任何人无需密码连接,即使设置了密码(如通过POSTGRES_PASSWORD)。有关更多信息,请参见PostgreSQL文档中的https://www.postgresql.org/docs/14/auth-trust.html%E3%80%82
注意2:如果将POSTGRES_HOST_AUTH_METHOD设置为trust,则不需要POSTGRES_PASSWORD。
注意3:如果将其设置为其他值(如scram-sha-256),可能需要额外的POSTGRES_INITDB_ARGS才能使数据库正确初始化(如POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256)。
PGDATA重要变更:https://github.com/docker-library/postgres/pull/1259%E3%80%82%E5%AF%B9%E4%BA%8E18%E7%89%88%E6%9C%AC%EF%BC%8C%E5%AE%83%E6%98%AF%60/var/lib/postgresql/18/docker%60%E3%80%82%E6%9B%B4%E9%AB%98%E7%89%88%E6%9C%AC%E5%B0%86%E7%94%A8%E5%85%B6%E5%90%84%E8%87%AA%E7%9A%84%E4%B8%BB%E7%89%88%E6%9C%AC%E6%9B%BF%E6%8D%A2%6018%60%EF%BC%88%E4%BE%8B%E5%A6%82%EF%BC%8CPostgreSQL
19.x为/var/lib/postgresql/19/docker)。18及以上版本中定义的VOLUME已更改为/var/lib/postgresql。挂载和卷应针对更新后的位置。这将允许用户在PostgreSQL主版本之间升级时,运行pg_upgrade并挂载/var/lib/postgresql时使用更快的--link。
希望在旧版本上选择此变更的用户可以通过显式设置PGDATA来实现(--env PGDATA=/var/lib/postgresql/17/docker --volume some-postgres:/var/lib/postgresql)。要迁移预先存在的数据,请首先适当调整卷的文件夹结构(将所有数据库文件移动到PG_MAJOR/docker子目录中)。
重要注意事项:(对于PostgreSQL 17及以下版本)将数据卷挂载到
/var/lib/postgresql/data,而不是/var/lib/postgresql,因为挂载到后者路径在容器重新创建时不会保留数据库数据。构建镜像的Dockerfile在/var/lib/postgresql/data处声明了一个卷,如果该路径未挂载数据卷,则容器运行时将自动创建一个https://docs.docker.com/engine/storage/#volumes%EF%BC%8C%E8%AF%A5%E5%8D%B7%E4%B8%8D%E4%BC%9A%E5%9C%A8%E5%AE%B9%E5%99%A8%E9%87%8D%E6%96%B0%E5%88%9B%E5%BB%BA%E6%97%B6%E9%87%8D%E7%94%A8%E3%80%82%E6%95%B0%E6%8D%AE%E5%B0%86%E5%86%99%E5%85%A5***%E5%8D%B7%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%82%A8%E9%A2%84%E6%9C%9F%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8D%B7%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%9C%A8%E5%AE%B9%E5%99%A8%E5%88%A0%E9%99%A4%E5%92%8C%E9%87%8D%E6%96%B0%E5%88%9B%E5%BB%BA%E6%97%B6%E4%B8%8D%E4%BC%9A%E4%BF%9D%E7%95%99%E3%80%82
此(PGDATA)是一个非Docker特定的环境变量。由于该变量由postgres服务器二进制文件使用(参见https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7%EF%BC%89%EF%BC%8C%E5%85%A5%E5%8F%A3%E7%82%B9%E8%84%9A%E6%9C%AC%E4%BC%9A%E5%B0%86%E5%85%B6%E8%80%83%E8%99%91%E5%9C%A8%E5%86%85%E3%80%82
作为通过环境变量传递敏感信息的替代方法,可以将_FILE附加到前面列出的某些环境变量,使初始化脚本从容器中存在的文件加载这些变量的值。特别是,这可用于从存储在/run/secrets/<secret_name>文件中的Docker密钥加载密码。例如:
console$ docker run --name some-postgres -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres-passwd -d mips64le/postgres
目前,仅支持POSTGRES_INITDB_ARGS、POSTGRES_PASSWORD、POSTGRES_USER和POSTGRES_DB。
如果您希望在此镜像派生的镜像中进行其他初始化,可以在/docker-entrypoint-initdb.d下添加一个或多个*.sql、*.sql.gz或*.sh脚本(必要时创建目录)。入口点调用initdb创建默认postgres用户和数据库后,将运行该目录中找到的任何*.sql文件、任何可执行*.sh脚本以及源任何非可执行*.sh脚本,以在启动服务前进行进一步初始化。
警告:仅当您使用空数据目录启动容器时,/docker-entrypoint-initdb.d中的脚本才会运行;容器启动时,任何预先存在的数据库都将保持不变。一个常见问题是,如果您的某个/docker-entrypoint-initdb.d脚本失败(这将导致
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 mips64le/postgres 相关的常用 Docker 镜像,适用于 关系型数据库、复杂查询、数据完整性 等不同场景: