连接两个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/了解更多信息
如果你发送了你的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