创建network
 docker network create -d overlay --attachable loc_net
  
 docker stack up -c  kafka.yml kafka
 docker stack up -c kafdrop.yml kafdrop
 docker stack up -c els.yml els
  
 docker stack ls
 docker service ls
查看service的启动错误原因
 docker service ps dd16mk9bm8ne --no-trunc
  
进入 kafka
 docker exec -it f907a4994f28 /bin/bash
 生产消息:  ip不好用  腾讯的垃圾服务器
 kafka-console-producer --broker-list 122.51.187.132:9092 --topic test1      #ctrl+z退出
 kafka-console-producer --broker-list kafka:9092 --topic testqqq      #ctrl+z退出
 消费消息:
 kafka-console-consumer --bootstrap-server kafka/ip:9092 --topic test1222 --from-beginning
 kafka-console-consumer --bootstrap-server 122.51.187.132:9092 --topic test1 --from-beginning 
 kafka-console-consumer --bootstrap-server kafka:9092 --topic testqqq --from-beginning
kafka的service容器和zookeeper
 kafka.yml
 ***************************************************************************
 version: "3"
services:
   zk:
     image: zookeeper:3.4.9
     hostname: zk
     ports:
       - "2181:2181"
     #environment:
     #    ZOO_MY_ID: 1
     #    ZOO_PORT: 2181
     #    ZOO_SERVERS: server.1=zk:2888:3888
     volumes:
       - /data/zk/data/:/data
       - /data/zk/log:/datalog
     #network_mode: bridge
     networks:
       - loc_net
  kafka:
     image: confluentinc/cp-kafka:5.1.0
     #hostname: kafka
     ports:
       - "19092:19092"
       - "9092:9092"
     environment:
       KAFKA_ADVERTISED_LISTENERS: LISTENER_DOCKER_INTERNAL://kafka:19092,LISTENER_DOCKER_EXTERNAL://122.51.187.132:9092
       KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_DOCKER_INTERNAL:PLAINTEXT,LISTENER_DOCKER_EXTERNAL:PLAINTEXT
       KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_DOCKER_INTERNAL
       KAFKA_ZOOKEEPER_CONNECT: "zk:2181"
       KAFKA_BROKER_ID: 1
       KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
       KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
       KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
     #volumes:
     #  - /data/kafka/data:/var/lib/kafka/data
     #depends_on:
     #  - zk
     #network_mode: bridge
     networks:
       - loc_net
networks:
     loc_net:
       external: true
       #driver: overlay
***************************************************************************
kafka客户端  可以不用进入容器看到消息
 http://122.51.187.132:9000/topic/testqqq
 kafdrop.yml
 ***************************************************************************
version: "3"
 services:
   kafdrop:
     image: obsidiandynamics/kafdrop
     restart: "no"
     ports:
       - "9000:9000"
     environment:
       KAFKA_BROKERCONNECT: "122.51.187.132:9092"
***************************************************************************
 
 Elasticsearch  的客户端  可以连接指定ip的 elasticsearch
 http://122.51.187.132:9800/
  
 els.yml
 ***************************************************************************
 version: '3'
 services:
   elastichd:
     image: containerize/elastichd:latest
     ports:
       - "9800:9800"
 ***************************************************************************