首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从外部连接到停靠容器中的Postgresql

从外部连接到停靠容器中的Postgresql
EN

Stack Overflow用户
提问于 2016-06-08 14:39:44
回答 16查看 365.3K关注 0票数 353

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

EN

回答 16

Stack Overflow用户

发布于 2016-06-08 21:53:34

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

代码语言:javascript
运行
复制
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres

现在,您已经将容器的端口5432映射到服务器的端口5432。-p <host_port>:<container_port> .So现在可从public-server-ip:5432访问postgres

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

代码语言:javascript
运行
复制
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

进入容器内部并创建一个数据库:

代码语言:javascript
运行
复制
docker exec -it 05b3a3471f6f bash
root@05b3a3471f6f:/# psql -U postgres
postgres-# CREATE DATABASE mytest;
postgres-# \q

转到您的localhost (这里有一些工具或psql客户端)。

代码语言:javascript
运行
复制
psql -h public-ip-server -p 5432 -U postgres

(密码mysecretpassword)

代码语言:javascript
运行
复制
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中详细解释了这一点。

票数 472
EN

Stack Overflow用户

发布于 2018-08-05 00:15:39

我设法让它在linux上运行。

  1. 运行docker postgres -确保端口是发布的,我使用的是高山,因为它是轻量级的。

postgres:alpine运行--rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="1234“--名称pg docker

  1. 使用另一个终端,使用postgres uri从主机访问数据库

psql postgresql://postgres:1234@localhost:5432/postgres

对于mac用户,请将psql替换为pgcli

票数 120
EN

Stack Overflow用户

发布于 2018-01-30 22:05:17

您也可以通过docker exec命令访问,方法是:

代码语言:javascript
运行
复制
$ docker exec -it postgres-container bash

# su postgres

$ psql

代码语言:javascript
运行
复制
$ docker exec -it postgres-container psql -U postgres
票数 64
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37694987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档