我在我的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中运行的容器,我可以很好地进入容器。
现在,我正在尝试从主机连接到容器
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
但他们都失败了。我也试图从
获取容器的IPdocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myZookeeper
给出
ip.of.container
但
kafka-topics.sh --list --zookeeper ip.of.container:2181
也失败了。
我有没有办法连接到在docker容器内运行的kafka / zookeeper?
此外,看起来虽然我使用-p
标志,但两个端口都没有暴露。那是为什么?
答案 0 :(得分:1)
看起来你在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的较新版本。