连接两个docker容器

MrM*_*ins 3 django postgresql docker

我有两个容器,第一个带有 a django,第二个带有postgresql.

好吧,在我运行的第一台服务器中django,我正在尝试将它与第二台服务器连接。第二个容器32770暴露了端口,但在端口内部运行5432。在我的本地机器上,我有连接:服务器:'Localhost' 端口:32770 用户:'myuser' 密码:''

它正在连接,但是对于我的django容器,我收到此错误:

could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 32770?
Run Code Online (Sandbox Code Playgroud)

端口也会发生同样的情况 5432

如何连接两台服务器?

Tar*_*ani 5

由于您单独运行容器,因此您有不同的选择

在 postgres 容器网络上运行 django

$ docker run -d ... postgres
<container id>

$ docker run -d ... --net container:<containerid> django
Run Code Online (Sandbox Code Playgroud)

然后django可以找到postgres localhost:5432

运行 django 和 postgres 作为命名容器容器

$ docker run --name postgresdb -d ... postgres
<container id>

$ docker run -d ...  django
Run Code Online (Sandbox Code Playgroud)

现在 django 可以找到 db on postgresdb:5432

在主机上运行两个容器

$ docker run --net host -d ... postgres
<container id>

$ docker run -d ... --net host django
Run Code Online (Sandbox Code Playgroud)

然后django可以找到postgres localhost:5432

在同一网络上运行容器

$ docker network create mynet

$ docker run --name postgresdb --net mynet -d ... postgres
<container id>

$ docker run --net mynet -d ...  django
Run Code Online (Sandbox Code Playgroud)

现在 django 可以找到 db on postgresdb:5432

连接到主机 IP 和映射端口

$ docker run -d -p 32770:5432 .... postgres

$ docker run -d .... django
Run Code Online (Sandbox Code Playgroud)

Django 现在可以连接到<yourdockerhostip>:32770.

更好的选择是使用docker-compose. 在https://docs.docker.com/compose/上了解更多信息