Docker设置-多个容器之间的网络

Docker设置-多个容器之间的网络,docker,apache-kafka,docker-compose,docker-machine,confluent-platform,Docker,Apache Kafka,Docker Compose,Docker Machine,Confluent Platform,在我的linux服务器上,我运行3个映像- A) Docker和Zookeeper与此Docker组合文件- version: '2' services: zookeeper: image: wurstmeister/zookeeper:3.4.6 ports: - "2181:2181" kafka: image: wurstmeister/kafka:2.11-2.0.0 ports: - "9092:9092" expos

在我的linux服务器上,我运行3个映像-

A) Docker和Zookeeper与此Docker组合文件-

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    ports:
     - "2181:2181"
  kafka:
    image: wurstmeister/kafka:2.11-2.0.0
    ports:
     - "9092:9092"
    expose:
     - "9093"
    environment:
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 
这将向主机打开kafka代理

B) 朱皮特胡布

docker run -v /notebooks:/notebooks -p 8000:8000 jupyterhub
C) Confluent Schema Registry(我还没有尝试过,但在最后的设置中,我还将有一个Schema Registry容器)


两家公司都在顺利启动。但是我如何打开jupyterhub容器到kafka容器和模式注册表端口,以便我的python脚本可以访问代理。

我假设您希望按需运行jupyter笔记本容器,而zookeeper和kafka容器将始终单独运行?您可以创建并将所有容器连接到此网络。然后您的容器将能够通过名称相互解析

  • 使用
    docker run
    启动其他容器时,请使用选项
    如果运行
    docker network ls
    ,则可以找到该网络的名称;它的名称类似于
    directoryname\u default
    。然后可以启动连接到该网络的容器

    docker run --net directoryname_default confluentinc/cp-schema-registry
    
    如果您可以将这些文件包含在同一个
    docker compose.yml
    文件中,则无需执行任何特殊操作。特别地,这对于合流模式注册表可能是有意义的,如果您使用AVRO消息,您可以考虑卡夫卡堆栈的核心部分。 您可以在此处使用Docker Compose服务名
    kafka
    作为主机名,但由于需要连接到“内部”侦听器,因此需要配置非默认端口9093。(Docker Compose
    expose:
    指令的作用不大,您可以安全地将其删除。)

    docker run --net directoryname_default confluentinc/cp-schema-registry