未能在MacOS上Docker化Kafka

我试图(和失败)在我的Mac机上运行dockerized kafka(MacOS Sierra(10.12.2))。 我有Docker for Mac版本17.03.1-ce,生成c6d412e。 这些是我正在使用的图像。

  • https://hub.docker.com/r/confluentinc/cp-zookeeper/
  • https://hub.docker.com/r/confluentinc/cp-kafka/

我遵循官方快速入门指南中的build议,使用以下命令运行Zookeeper和Kafka。

docker run -d \ --net=host \ --name=zookeeper \ -e ZOOKEEPER_CLIENT_PORT=32181 \ confluentinc/cp-zookeeper:3.2.1 docker run -d \ --net=host \ --name=kafka \ -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 \ confluentinc/cp-kafka:3.2.1 

主要这不适用于docker-compose。 再次,它是在我的Mac版本1.11.2,build立dfed245。

 version: '2' services: zookeeper: image: confluentinc/cp-zookeeper:3.2.2 environment: - ZOOKEEPER_CLIENT_PORT=2181 ports: - 2181:2181 kafka: image: confluentinc/cp-kafka:3.2.2 environment: - KAFKA_BROKER_ID=0 - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true ports: - 9092:9092 - 8082:8082 depends_on: - zookeeper 

服务将开始,我甚至可以用这些命令创build一个主题。

 kafka-topics --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic test kafka-topics --list --zookeeper zookeeper:2181 

当我试图用这个命令产生时,动物园pipe理员保持沉默。

 kafka-console-producer --broker-list kafka:9092 --topic test message-one message-two 

当我尝试使用这个命令时:

 kafka-console-consumer --bootstrap-server zookeeper:2181 --topic test --from-beginning 

动物园pipe理员不断吐出这个错误:

 ... zookeeper_1 | [2017-06-28 00:55:07,222] INFO Accepted socket connection from /172.20.0.3:52124 (org.apache.zookeeper.server.NIOServerCnxnFactory) zookeeper_1 | [2017-06-28 00:55:07,222] WARN Exception causing close of session 0x0 due to java.io.EOFException (org.apache.zookeeper.server.NIOServerCnxn) zookeeper_1 | [2017-06-28 00:55:07,223] INFO Closed socket connection for client /172.20.0.3:52124 (no session established for client) (org.apache.zookeeper.server.NIOServerCnxn) ... 

您已经为新的控制台使用者指定了错误的主机和端口。 试试console-consumer --bootstrap-server kafka:9092 --topic test --from-beginning

另外,如果您从外部docker运行这些命令(即在本地macOS主机上),然后编辑您的/ etc / hosts文件,以添加kafka和zookeeper作为localhost的别名

您可能还需要为zookeeper和kafka日志声明和挂载外部卷,以便在销毁docker镜像并升级到新版本时不会丢失数据。

Confluent有一个完整的QuickStartlogging这些图像在这里http://docs.confluent.io/current/cp-docker-images/docs/quickstart.html