计算docker容器中的IP地址
我有一个带有多个服务容器定义的计算docker容器中的IP地址,docker,apache-kafka,docker-compose,Docker,Apache Kafka,Docker Compose,我有一个带有多个服务容器定义的docker compose文件。其中一个服务在同一docker compose运行中与Apache Kafka进行通信 我对卡夫卡码头工人的定义如下: kafka: image: spotify/kafka ports: - "2181:2181" - "9092:9092" environment: ADVERTISED_HOST: 127.0.0.1 ADVERTISED_PORT:
docker compose
文件。其中一个服务在同一docker compose运行中与Apache Kafka进行通信
我对卡夫卡码头工人的定义如下:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
我的服务定义在同一个docker compose文件中。在服务的启动脚本中,我必须找出Kafka实例的IP地址
我知道,我可以使用类似于docker inspect的东西来找出容器使用的IP地址
但是我如何在docker compose环境中动态地完成它呢
编辑
因此,正确的配置应该是(谢谢,@nwinkler):
不要忘记将
播发的\u主机设置为kafka
(或者您在docker compose
中如何命名您的kafka容器)。您的容器的ip将是您要查找的ip
将端口号(本例中为9092)附加到容器的ip以获取kafka提供的任何服务。您可以使用此功能。如果您从其他容器提供到kafka
容器的链接,Docker Compose将确保您的其他容器可以通过其主机名访问kafka容器-您不必知道其IP地址
例如:
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
myservice:
image: foo
links:
- kafka:kafka
这将允许您的myservice
容器通过Kafka
主机名访问Kafka容器。因此,从您的myservice
容器中,您可以执行类似curl的操作http://kafka:9092
访问卡夫卡容器上的服务
Docker Compose通过DNS完成此操作,它在您的容器中创建主机名/IP映射,允许您在不知道其IP地址的情况下访问容器。您应该能够使用kafka
作为主机名连接到kafka
容器。不客气-很高兴听到它正在工作。
kafka:
image: spotify/kafka
ports:
- "2181:2181"
- "9092:9092"
environment:
ADVERTISED_HOST: 127.0.0.1
ADVERTISED_PORT: 9092
myservice:
image: foo
links:
- kafka:kafka