从外部连接到 docker 容器中的 Postgresql

新手上路,请多包涵

我在 docker 容器中的服务器上有 Postgresql。如何从外部(即本地计算机)连接到它?我应该应用什么设置来允许它?

原文由 Sojo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.9k
1 个回答

你可以这样运行 Postgres(映射一个端口):

 docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres

所以现在你已经将容器的 5432 端口映射到了服务器的 5432 端口。 -p <host_port>:<container_port> 。所以现在你的postgres可以从你的 public-server-ip:5432

测试:运行 postgres 数据库(上面的命令)

 docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
05b3a3471f6f        postgres            "/docker-entrypoint.s"   1 seconds ago       Up 1 seconds        0.0.0.0:5432->5432/tcp    some-postgres

进入你的容器并创建一个数据库:

 docker exec -it 05b3a3471f6f bash
root@05b3a3471f6f:/# psql -U postgres
postgres-# CREATE DATABASE mytest;
postgres-# \q

转到您的本地主机(您有一些工具或 psql 客户端)。

 psql -h public-ip-server -p 5432 -U postgres

(密码 mysecretpassword)

 postgres=# \l

                             List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 mytest    | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres

因此,您正在从本地主机访问数据库(在服务器上的 docker 中运行)。

这篇文章 中,它进行了详细的解释。

原文由 lvthillo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题