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

标签 postgresql docker remote-connection

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

最佳答案

你可以这样运行 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 中运行)。

this post很详细。

关于postgresql - 从外部连接到 docker 容器中的 Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694987/

相关文章:

php - 从其他计算机连接数据库

ssh_dispatch_run_fatal 找不到匹配的 key 交换方法(在 Zend Studio 远程连接上)

postgresql - 如何在单个查询中获取多个计数

javascript - 为什么我在运行迁移时出错,我尝试将typedatas文本更改为JSONB(PostgreSql+sequelize)

postgresql - Postgres 索引?

linux - 为什么在旧版本的 ubuntu 上使用新版本的 glibc 时会发生堆栈粉碎?

docker - 来自守护程序 : pull access denied for universal, 存储库的错误响应不存在或可能需要 'docker login':拒绝:请求访问

postgresql - 将 postgres 参数传递到 Kubernetes 部署中

django - postgres, django & general webserver auth security (pg_hba.conf 等)

mysql - 远程 MySql 可以使用 Navicat 连接,但不能从另一台主机连接