找出docker容器中的IP地址

时间:2016-11-07 13:11:32

标签: docker apache-kafka docker-compose

我有一个带有多个服务容器定义的$v['content_en'] = preg_replace('/(<img[^>]+>(?:<\/img>)?)/i', '<figure>$1<figure />', $v['content_en']); 文件。其中一项服务在同一个docker-compose运行中与docker-compose进行通信。

所以我有像这样的kafka docker定义:

Apache Kafka

我的服务定义在同一个docker-compose文件中。在服务的启动脚本中,我必须弄清楚Kafka实例的IP地址。

我知道,我可以使用类似 kafka: image: spotify/kafka ports: - "2181:2181" - "9092:9092" environment: ADVERTISED_HOST: 127.0.0.1 ADVERTISED_PORT: 9092 的内容来查找容器使用的IP地址。

但是我怎么能在docker-compose环境中动态地做呢?

修改

所以,正确的配置应该是(谢谢你,@ nwinkler):

docker inspect

不要忘记将kafka: image: spotify/kafka ports: - "2181:2181" - "9092:9092" environment: ADVERTISED_HOST: kafka ADVERTISED_PORT: 9092 myservice: image: foo links: - kafka:kafka 设置为ADVERTISED_HOST(或者如何将您的kafka容器命名为kafka)。

2 个答案:

答案 0 :(得分:5)

您可以使用Docker Compose Links功能。如果您从其他容器提供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之类的操作来访问Kafka容器上的服务。

Docker-Compose通过DNS完成此操作,它会在您的容器中创建一个主机名/ IP映射,允许您在不知道其IP地址的情况下访问容器。

答案 1 :(得分:1)

你的容器的ip将是你正在寻找的ip。

将端口号(在您的情况下为9092)附加到容器的IP以获取kafka正在服务的任何内容。