我安装了 postgres office 映像并使用命令启动它
sudo docker run -it -p 5432:5432 --name database -e POSTGRES_PASSWORD=q postgres
我获得了大量数据,但是 postgresql 服务器在 docker 中启动。
2024-03-06 08:47:10.553 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
接下来,我尝试使用以下命令从本地计算机连接到该数据库
psql -U postgres
我收到
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
同时,在本地机器上我禁用了postgresql服务,以免连接到本地postgresql服务器
如何在docker中连接postgres服务器,我还想找出该卷的路径,以便将其转发到本地目录,这样容器中去往postgres服务器的数据就保存在本地机器和容器中的服务器使用本地机器上的数据。
我想用按键连接音量
-v /var/lib/local/postgres/postgres-data:/var/lib/docker/postgres/postgresql-data
但我不知道要指定哪些路径,但据我了解,冒号之前是本地计算机上的数据库文件夹(我假设我可以指定任何方便的路径),后面是数据库文件夹在容器中(这是数据库等存储在我不知道的容器中的地方)。如果我理解正确,那么容器中的数据库服务器将访问本地文件夹(冒号之前的文件夹),而不是访问其内部文件夹,因此容器中最终的所有数据都将保存在本地。如果我误解了,请纠正我。
其实错误不在docker中,而是在客户端启动的方式上:
这是一个 Unix 套接字,而不是 IP。
将IP地址添加到命令行
psql -h 127.0.0.1 -U postgres
现在关于连接音量。
postgres@latest
数据库位于目录中,/var/lib/postgresql/data/
因此要连接本地数据库,您需要像这样映射:-V /path/to/db/on/host:/var/lib/postgresql/data/