如何使用Mac上的Docker进行调试

时间:2017-06-08 13:45:00

标签: macos docker

我在我的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

但他们都失败了。我也试图从

获取容器的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标志,但两个端口都没有暴露。那是为什么?

1 个答案:

答案 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的较新版本。