[英]Connect from a Docker container to port of another docker container
I have two docker containers running on a linux host. 我有两个在Linux主机上运行的docker容器。
One with a DATABASE and one with an APPLICATION. 一个带有数据库,另一个带有应用程序。
How can I connect from container APPLICATION to container DATABASE port 5432? 如何从容器APPLICATION连接到容器DATABASE端口5432?
For example: I start DATABASE container and bind port 5432 to hosts localhost with "-p5432:5432. But how can I acces this port from APPLICATION? I cannot bind port 5432 to host localhost because this port is now already used. 例如:我启动DATABASE容器,并使用“ -p5432:5432将端口5432绑定到主机localhost。但是如何从APPLICATION中访问该端口呢?我无法将端口5432绑定到主机localhost,因为该端口现已被使用。
Docker version 1.12.6 Docker版本1.12.6
I used now 我现在用
sudo docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.100 --ip-range=172.20.1.0/24 my-network
sudo docker run --name postgres --network=my-network --ip=172.20.0.10 -d postgres
sudo docker run --name application --network=my-network --ip=172.20.0.15 -d application
and configured app in APPLICATION container to look for ip 172.20.0.10 和配置的应用程序在APPLICATION容器中查找ip 172.20.0.10
https://docs.docker.com/engine/userguide/networking/work-with-networks/ https://docs.docker.com/engine/userguide/networking/work-with-networks/
Alternatively you can use docker networks, easy to achieve with docker-compose
. 或者,您可以使用
docker-compose
轻松实现的docker网络。 In my example you can point from your app
container to postgres-container
as this: postgres-container:5432
在我的示例中,您可以从
app
容器指向postgres-container
如下所示: postgres-container:5432
docker-compose.yml: docker-compose.yml:
version: "3"
services:
app:
image: postgres
command: sh -c 'sleep 10; echo \\l | PGPASSWORD=mysecretpassword psql -U postgres -h postgres-container'
postgres-container:
image: postgres
environment:
- POSTGRES_PASSWORD=mysecretpassword
Command: 命令:
docker-compose up
Output: 输出:
Attaching to postgresql_app_1, postgresql_postgres-container_1
(...)
postgres-container_1 | server started
(...)
app_1 | List of databases
app_1 | Name | Owner | Encoding | Collate | Ctype | Access privileges
app_1 | -----------+----------+----------+------------+------------+-----------------------
app_1 | postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
app_1 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
app_1 | | | | | | postgres=CTc/postgres
app_1 | template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
app_1 | | | | | | postgres=CTc/postgres
app_1 | (3 rows)
app_1 |
You can use docker link to link to running containers ... like below and use alias name as ip address. 您可以使用docker link链接到正在运行的容器...如下所示,并使用别名作为ip地址。 You can do same using docker-compose as well.
您也可以使用docker-compose做同样的事情。
$ docker run -d -P --name application --link db-image:db application-image $ docker run -d -P --name应用程序--link db-image:db application-image
use 'db' as host name in your application. 在应用程序中使用“ db”作为主机名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.