本教程将指导您完成如何在 Docker 容器内运行具有持久存储的 PostgreSQL 并连接到它的过程。
PostgreSQL是一个开源的对象关系数据库管理系统。它已经存在了 30 多年,并标榜自己是“世界上最先进的开源关系数据库”。
在轻松打包、部署和运行分布式应用程序方面,Docker已成为 IT 行业的标准。Docker 容器让您可以快速启动新应用程序,而不会因依赖项而使您的系统变得混乱。
您可以使用 Docker 在容器中运行 PostgreSQL 数据库,就像它是远程服务器一样。Docker 容器基于开放标准,使容器能够在所有主要Linux 发行版、MacOS 和 Microsoft Windows 上运行。
我们在这里要做的是下载PostgreSQL镜像,检查镜像是否准备好,使用特定参数运行镜像,最后连接到正在运行的PostgreSQL实例。
首先,我们需要从Docker Hub获取现有的 PostgreSQL 官方镜像。镜像适用于 PostgreSQL 版本 9、10、11、12 和 13。如果您需要特定版本,latest
请将标签更改 为所需版本。
现在让我们拉取图像:
1 |
sudo docker pull postgres:latest |
使用上述命令将从 Docker Hub 存储库中提取最新可用版本的 PostgreSQL。
在部署之前,您需要设置一个 Docker 卷或绑定安装来持久化您的数据库。否则,当容器重新启动时,您的数据将丢失。安装应该 /var/lib/postgresql/data
在容器内的目录中。
出于本指南的目的,我们将创建一个 docker 卷并将其附加到您的 PostgreSQL 容器。
以下命令将在您的本地计算机中创建卷,您可以稍后与 PostgreSQL 容器连接:
1 |
sudo docker volume create postgres-volume |
现在你的机器上有 PostgreSQL 镜像和一个用于保存数据的卷,你可以部署一个容器:
1 |
sudo docker run -d --name=postgres13 -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=your_password postgres |
该 docker run
命令将在 Docker 容器中创建一个正在运行的 PostgreSQL 数据库。
让我们分解一下这个语法。以下是该命令中每个参数的含义:
-d
将以分离模式运行此容器,以便它在后台运行。--name
将名称“postgres13”分配给您的容器实例。-p
会将 PostgreSQL 容器端口 5432 绑定到主机上的相同端口。您将能够localhost:5432
使用psql
在您的主机上运行的PostgreSQL 客户端 ( )进行连接 。-v
选项将容器卷 ( /var/lib/postgresql
)内的数据文件夹绑定到postgres-volume
您在上一步中创建的本地 Docker 卷 ( )。-e
设置环境变量。在这种情况下,PostgreSQL 根密码。postgres
是我们用来创建容器的图像的名称。您可以通过列出正在运行的容器来检查容器是否正在运行:
1 |
sudo docker ps |
1 2 |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6cb3293fe725 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres13 |
恭喜!您的新 PostgreSQL 实例现在正在 Docker 上运行。
此外,您可以使用以下命令检查正在运行的 PostgreSQL 容器的日志文件:
1 |
sudo docker logs postgres13 |
您可以通过附加到容器并运行psql
命令来获得交互式 PostgreSQL shell 。这提供了完整的 PostgreSQL 命令行界面,因此您可以使用所有熟悉的命令和标志。
1 |
sudo docker exec -it postgres13 psql -U postgres |
psql
如果您在主机上预安装了PostgreSQL 客户端,您还可以使用PostgreSQL 客户端连接 PostgreSQL Docker 实例。
1 |
psql -h localhost -U postgres |
使用 Docker 最重要的用例之一是可以轻松创建和访问在容器中构建的应用程序,而无需担心依赖项和安装。
在本教程中,我们学习了使用 Docker 而不是实际主机来设置 PostgreSQL 服务器。
如今,随着不同微服务依赖于自己的数据库的微服务架构,将 PostgreSQL 服务器部署为 Docker 容器已成为一种非常普遍的做法。它还广泛用于任何本地执行或在隔离环境中运行端到端集成测试。
from:https://blog.csdn.net/allway2/article/details/121630666