图kafka hostPort映射

我想用卡夫卡来pipe理卡夫卡群集。

我是无花果的初学者,我有一个hostPort映射的问题。

我使用kafkadocker作为kafka图像。 我的fig.yml在这里:

zookeeper: image: jplock/zookeeper:3.4.6 ports: - "2181" kafka: image: wurstmeister/kafka:0.8.1.1-1 ports: - "9092" links: - zookeeper:zk environment: KAFKA_ADVERTISED_HOST_NAME: 192.168.59.103 volumes: - /var/run/docker.sock:/var/run/docker.sock 

这是图像的例子。

现在,这是我的问题:

我运行这个命令启动一个集群:

无花果规模kafka = 2

我创build一个像这样的kafka话题:

./kafka-topics.sh –create –zookeeper 192.168.59.103:49157 – 复制因子2 – 部分1 – 主题testing

下一个:

$ ./kafka-topics.sh –describe –zookeeper 192.168.59.103:49157 –topic test2主题:test2 PartitionCount:1 ReplicationFactor:2 Configs:主题:test2分区:0 Leader:49158 Replicas:49159,49158 Isr: 49159,49158

现在我的figKakfa_2因为某些原因崩溃(它在49159端口上运行)。

我怎样才能重新启动这个容器与相同的端口?

如果我再次运行缩放命令,我得到一个新的容器,但映射到另一个主机端口,动物园pipe理员没有得到它作为旧的实例。

谢谢。

如果你在你的fig.yml中使用net: host ,你所有的docker容器都将使用主机的networking堆栈,不需要公开端口。 这意味着它们不会在重新启动或缩小时更改。 你需要弄清楚如何让你的卡巴实例使用独特的端口。

http://www.fig.sh/yml.html

最简单的解决scheme是不要在主机上公开端口,而是在端口9092上访问你的容器IP上的kafkas(比如172.17.0.3或类似的东西)。你可以通过$ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name> docker检查一个容器的IP。inspect $ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name>