在docker-compose.yml中了解容器的主机名

时间:2018-12-02 14:20:09

标签: docker docker-compose devops

我正在尝试理解docker-compose.yml(也显示在本文的底部)。

问题: confluent:2181用于以下行

KAFKA_ZOOKEEPER_CONNECT: "confluent:2181"

这个confluent主机名是如何定义的?如果我正确理解了Docker中的主机名,则唯一的容器主机名是zookeeperkafkarest-proxyschema-registry

docker-compose.yml

version: "2"
services:
    zookeeper:
        image: confluent/zookeeper
        ports:
        - "2181:2181"
        environment:
        zk_id: "1"
        network_mode: "host"
    kafka:
        image: confluent/kafka
        depends_on:
        - zookeeper
        ports:
        - "9092:9092"
        environment:
        KAFKA_ZOOKEEPER_CONNECT: "confluent:2181"
        network_mode: "host"
    rest-proxy:
        image: confluent/rest-proxy
        depends_on:
        - zookeeper
        - kafka
        - schema-registry
        ports:
        - "8082:8082"
        environment:
        RP_ZOOKEEPER_CONNECT: "confluent:2181"
        RP_SCHEMA_REGISTRY_URL: "http://confluent:8081"
        network_mode: "host"
    schema-registry:
        image: confluent/schema-registry
        depends_on:
        - kafka
        - zookeeper
        ports:
        - "8081:8081"
        environment:
        SR_KAFKASTORE_CONNECTION_URL: "confluent:2181"
        network_mode: "host"

2 个答案:

答案 0 :(得分:1)

您是对的。根据{{​​1}},所定义的服务将仅为docker-compose.ymlzookeeperkafkarest-proxy提供DNS解析,而不为schema-registry提供DNS解析。

但是,如果您take a look at the documenttion from confluentinc,则要求您修改主机中的主机文件:

  

编辑您的主机文件并为Docker计算机添加主机条目。

     

192.168.99.100汇合

这就是为什么您可以使用confluent并获得名称解析的原因。它与docker或compose无关。

P.S:请注意,您正在使用不推荐使用的图像according to their documentation

答案 1 :(得分:1)

是的,你是对的。

根据README,您应该先汇合。