图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堆栈,不需要公开端口。 这意味着它们不会在重新启动或缩小时更改。 你需要弄清楚如何让你的卡巴实例使用独特的端口。
最简单的解决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>
。