当前位置: 首页 > 知识库问答 >
问题:

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

丁雅惠
2023-03-14

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

共有1个答案

谭山
2023-03-14

可以通过以下方式运行Postgres(映射端口):

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

现在您已经将容器的端口5432映射到服务器的端口5432。-p : 。所以现在可以从public-server-ip:5432访问postgres

要测试:运行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 -h public-ip-server -p 5432 -U postgres
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   

在这篇文章中,它被详细阐述了。

 类似资料:
  • 我已经为oracle 19c创建了一个映像。我已使用以下命令启动容器。 创建容器后,我可以登录容器。我能够在容器内连接以下命令。 sqlplus系统/password1@172.17.0.2:1527/ORCLCDB 在容器外部,通过cmd,我无法连接到该oracle实例。 注意:我已经在windows计算机上的端口1521(默认端口)安装了oracle。 listener.ora 特斯奈姆斯·奥

  • 要运行测试文件,Flask应用程序需要连接到Redis。我尝试将这些URL用于redis主机,如localhost:6379,redis:6379,0.0.0.0:6379,但都没有用。他们都告诉我连接错误或连接拒绝。 知道如何从jenkins docker容器中连接到redis吗?

  • 我在我的Windows10电脑(Ubuntu18.04)上安装了Windows子系统Linux。我在Windows上安装了Docker toolbox,通过虚拟机运行,我可以通过以下设置正常运行Docker命令: 我可以很好地访问它并正确安装/运行docker容器。其中一个服务是运行在localhost:8084上的Kafka Connect容器,如果是从我的Windows创建的。如果我直接从Ub

  • (由于我对Docker或mysql管理的了解有限,这可能是一个愚蠢的问题,但由于我花了整整一个晚上讨论这个问题,所以我敢问这个问题。) 概括地说 我想在docker容器中运行mysql,并从我的主机连接到它。到目前为止,我取得的最好成绩是: 更多详细信息 我正在使用以下: 在有此文件的目录中,我可以成功地构建映像并运行它: 当我连接到图像上时,它似乎工作得很好: 然而,我并没有从主持人那里获得那么

  • 问题内容: 我创建了我的第一个Docker容器,它使用Go运行服务器,但是无法从主机外部访问它。我刚开始使用docker,所以在这里有点迷路了。 因此,我有一个非常简单的Go代码来启动服务器,我构建了Docker映像,该映像安装了Go并在Linux基本映像中构建了代码。我在端口8080上运行服务器,因此我将该端口暴露给运行容器的主机,如下所示: 那行得通, 我可以通过docker的机器IP ( 启

  • 问题内容: 我在本地主机上运行mysql,可以通过运行以下命令进行连接: 我还使用以下命令运行了Docker容器: 我想从docker容器访问Mysql数据库。所以我也从docker容器输入: 但这给了我错误: 我究竟做错了什么?端口似乎是正确的。 编辑1在码头工人的 输出: 问题答案: 即使将MySQL配置为侦听所有接口,然后从容器通过非环回IP访问MySQL,您仍可能会发现Docker的路由,