我在Maac的docker容器中运行了kafka。这是我的开始方式
#Start Zookeeper
docker run -d -p 2181:2181 --net myNet --name myZookeeper myRegistry/kafka:0.10.1.0 zookeeper-server-start
#Start Kafka
export KAFKA_ADVERTISE_HOSTNAME="my.ip.add"
docker run -d --net br-advisor-nw --name whi-kafka -p 9092:9092 --link myZookeeper:myZookeeper myRegistry/kafka:0.10.1.0 kafka-server-start --override zookeeper.connect=${KAFKA_ADVERTISE_HOSTNAME}:2181 --override broker.id=0 --override advertised.host.name=${KAFKA_ADVERTISE_HOSTNAME} --override group.max.session.timeout.ms=3600000 --override auto.create.topics.enable=false --override replica.fetch.max.bytes=10485760 --override message.max.bytes=10485760 --override port=9092 --override listeners=PLAINTEXT://:9092
我可以看到容器在Docker中运行,并且可以将ssh放入容器中。
现在,我正在尝试从主机连接到容器
kafka-topics.sh --list --zookeeper my.ip.add:2181
但这无法连接。我也尝试过
kafka-topics.sh --list --zookeeper 0.0.0.0:2181
kafka-topics.sh --list --zookeeper 127.0.0.0:2181
kafka-topics.sh --list --zookeeper localhost:2181
但他们都失败了。我也试图从中获取容器的IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myZookeeper
给
ip.of.container
但
kafka-topics.sh --list --zookeeper ip.of.container:2181
也失败了。
我有什么方法可以连接到在docker容器中运行的kafka / zookeeper?
另外,尽管我使用的是
-p
标志,但似乎两个端口都没有暴露。这是为什么?
最佳答案
看来您在Mac上使用docker-toolbox / docker-machine运行docker。这将在幕后创建一个Linux VM,但不具有隐藏该VM的xhyve版本的某些功能。您会看到它在virutalbox中运行,并且会在用于连接到容器的IP地址中看到它。
您应该能够运行:
kafka-topics.sh --list --zookeeper 192.168.99.100:2181
要将来查找您的IP,可以使用
docker-machine ip
。如果您的Mac安装足够新,则您可能需要升级到使用xhyve的较新版本。
关于macos - 如何在Mac上使用Docker进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44437452/