4.2. 在容器中运行多个 PostgreSQL 版本
要在同一主机上运行不同版本的 PostgreSQL,请在容器中运行它们,因为您无法并行安装同一模块的多个版本(流)。
此流程以 PostgreSQL 13 和 PostgreSQL 15 作为示例,但您可以使用 Red Hat Ecosystem Catalog 中提供的任何 PostgreSQL 容器版本。
先决条件
-
container-tools元数据包已安装。
流程
使用您的红帽客户门户网站帐户向
registry.redhat.io注册中心进行身份验证:# podman login registry.redhat.io如果您已登录到容器注册中心,请跳过这一步。
在容器中运行 PostgreSQL 13 :
$ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_1>:5432 rhel9/postgresql-13有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录。
在容器中运行 PostgreSQL 15 :
$ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_2>:5432 rhel9/postgresql-15有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录。
在容器中运行 PostgreSQL 16 :
$ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_3>:5432 rhel9/postgresql-16有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录。
注意容器名称和两个数据库服务器的主机端口必须不同。
要确保客户端可以访问网络上的数据库服务器,请在防火墙中打开主机端口:
# firewall-cmd --permanent --add-port={<host_port_1>/tcp,<host_port_2>/tcp,<host_port_3>/tcp,...} # firewall-cmd --reload
验证
显示正在运行的容器的信息:
$ podman ps连接到数据库服务器,并以 root 用户身份登录:
# psql -u postgres -p -h localhost -P <host_port> --protocol tcp