计算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