无法在Docker上运行Kafka和Zookeeper来创建Kafka主题

问题描述 投票:0回答:1

我有在两个单独的Docker容器上运行的Kafka和Zookeeper:

<private-domain>/wurstmeister-kafka:0.10.1.0-2
<private-domain>/wurstmeister-zookeeper:3.4.9

两个容器似乎都启动了,但是当我尝试通过进入第一个容器来创建Kafka主题时:

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

我收到此错误:

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)
[2020-06-07 03:10:55,293] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)

[请注意,我确实阅读了其他相关问题,并尝试向命令添加参数,例如-e ZK_HOSTS="localhost:2181"。我知道像我这样在环境中工作的其他人也能够成功运行命令,因此我怀疑这可能是我这方面的配置问题。你能指导吗?

EDIT:以下是Docker Compose文件:

version: '2'
services:
 kafka:
   image: <private-domain>/wurstmeister-kafka:0.10.1.0-2
   container_name: kafka
   ports:
      - 9092:9092
   environment:
     KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
     KAFKA_ADVERTISED_PORT: 9092
     KAFKA_ZOOKEEPER_CONNECT: 127.0.0.1:2181

   restart:
       "unless-stopped"

version: '2'
services:
 zk:
  image: <private-domain>/wurstmeister-zookeeper:3.4.9
  container_name: zk
  ports:
      - "2181:2181"
  restart:
   "unless-stopped"

docker ps的输出:

CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                                NAMES
bf67a49da57a        wurstmeister-kafka:0.10.1.0-2   "start-kafka.sh"         5 months ago        Up 29 minutes       0.0.0.0:9092->9092/tcp                               kafka
ef3e908d82b3        wurstmeister-zookeeper:3.4.9    "/bin/sh -c '/usr/sbin/sshd && bash /usr/bin/start-zk.sh'"   5 months ago        Up 29 minutes       22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp   zk
docker apache-kafka apache-zookeeper
1个回答
0
投票

您有两个Compose文件。因此,您的容器位于单独的网络上,并且无法相互引用。

您必须将两个服务添加到一个services:块下的一个文件中,并且仅运行一个docker-compose up命令

您可以在Internet上找到有效的撰写文件,也可以将minikube / oc与Kafka Helm Charts或Operators一起使用,这就是大公司在容器中测试Kafka的方式。

© www.soinside.com 2019 - 2024. All rights reserved.