+-
找出docker容器中的IP地址
我有一个包含多个服务容器定义的docker-compose文件.其中一个服务在同一个docker-compose运行中与Apache Kafka通信.

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

  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):

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(或者如何在docker-compose中命名你的kafka容器).

最佳答案
您可以使用 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地址的情况下访问容器.

点击查看更多相关文章

转载注明原文:找出docker容器中的IP地址 - 乐贴网