Docker设置-多个容器之间的网络
在我的linux服务器上,我运行3个映像- A) Docker和Zookeeper与此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
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 Composeexpose:
指令的作用不大,您可以安全地将其删除。)
docker run --net directoryname_default confluentinc/cp-schema-registry