连接两个docker集装箱

我有两个容器,第一个用django ,第二个用postgresql

那么,在我的第一台服务器上,我已经运行django ,我试图连接到第二个。 第二个容器的端口32770暴露,但内部运行在端口5432 。 在我的本地机器上,我有连接:服务器:'本地主机'端口: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? 

端口5432

我如何连接两台服务器?

既然你是单独运行容器,你有不同的select

在postgres容器的networking上运行django

 $ docker run -d ... postgres <container id> $ docker run -d ... --net container:<containerid> django 

然后django可以在localhost:5432上findpostgres localhost:5432

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

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

现在Django可以在postgresdb:5432上finddb postgresdb:5432

在主机上运行这两个容器

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

然后django可以在localhost:5432上findpostgres localhost:5432

在同一networking上运行容器

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

现在Django可以在postgresdb:5432上finddb postgresdb:5432

连接到主机IP和映射端口

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

Django现在可以连接到<yourdockerhostip>:32770上的数据库<yourdockerhostip>:32770

更好的select是使用docker-compose来运行它。 通过https://docs.docker.com/compose/了解更多信&#x606F;

如果你发送了你的configuration文件,会更好。 但是,我认为你需要使用docker-compose 。 在文档中您可以find有关容器之间的通信。

简单的configuration例子:

 system_mysql: image: mysql:5.6.27 container_name: system_mysql hostname: system_mysql environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_USER=user - MYSQL_PASSWORD=password - MYSQL_DATABASE=databse ports: - "3306:3306" django: restart: always container_name: django hostname: django . . continue with [environment, volumes, build] . depends_on: - system_mysql