为什么我不能访问基于Docker的zookeeper端口

在OS X上,我成功启动了kafka docker镜像,但似乎无法在本地主机上访问它

➜ ~ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f931da3d661 wurstmeister/zookeeper:3.4.6 "/bin/sh -c '/usr/..." About an hour ago Up About an hour 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp docker_zookeeper_1 8bc36bcf8fdf wurstmeister/kafka:0.10.1.1 "start-kafka.sh" About an hour ago Up About an hour 0.0.0.0:9092->9092/tcp docker_kafka_1 ➜ ~ telnet 0.0.0.0:2181 0.0.0.0:2181: nodename nor servname provided, or not known ➜ ~ telnet 0.0.0.0 2181 Trying 0.0.0.0... telnet: connect to address 0.0.0.0: Connection refused telnet: Unable to connect to remote host ➜ ~ telnet 192.168.43.193 2181 Trying 192.168.43.193... telnet: connect to address 192.168.43.193: Connection refused telnet: Unable to connect to remote host ➜ ~ telnet 127.0.0.1 2181 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused telnet: Unable to connect to remote host 

我的docker文件是在这里kafka.yml和使用此命令:

 docker-compose -f src/main/docker/kafka.yml up -d 

当我使用

 ./mvnw 

控制台是:

 2017-09-15 17:05:46.433 WARN 15871 --- [localhost:2181)] org.apache.zookeeper.ClientCnxn : Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361) at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141) 

我怎样才能访问2181端口

编辑

docker日志8bc36bcf8fdf

 [2017-09-15 08:14:13,386] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable) java.lang.RuntimeException: A broker is already registered on the path /brokers/ids/1001. This probably indicates that you either have configured a brokerid that is already in use, or else you have shutdown this broker and restarted it faster than the zookeeper timeout so it appears to be re-registering. at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:393) at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:379) at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:70) at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:51) at kafka.server.KafkaServer.startup(KafkaServer.scala:270) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39) at kafka.Kafka$.main(Kafka.scala:67) at kafka.Kafka.main(Kafka.scala) [2017-09-15 08:14:13,393] INFO [Kafka Server 1001], shutting down (kafka.server.KafkaServer) 

docker日志1f931da3d661

 2017-09-14 08:53:05,878 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception EndOfStreamException: Unable to read additional data from client sessionid 0x15e7ea74c8e0000, likely client has closed socket at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228) at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208) at java.lang.Thread.run(Thread.java:745) 2017-09-14 08:53:05,887 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1007] - Closed socket connection for client /172.18.0.2:54222 which had sessionid 0x15e7ea74c8e0000 

您是否尝试过使用主机networking? https://docs.confluent.io/current/cp-docker-images/docs/quickstart.html#zookeeper

这看起来会简化和解决这个问题。 我还build议查看这些图片,而不是看起来像您正在使用的自定义的图片,因为这些图片正在为人们的生产运行,所以他们被称为工作得很好。