我想使用fig和kafka来管理kafka集群。
我是fig的初学者,在主机端口Map方面有问题。
我用Kafka Docker 作为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
我创造了一个Kafka的主题如下:
./kafka-topics.sh--create--zookeeper 192.168.59.103:49157--复制因子2--分区1--主题测试
下一步:
$./kafka-topics.sh—描述—zookeeper 192.168.59.103:49157—主题测试2topic:test2 partitioncount:1个副本ionfactor:2 configs:topic:test2分区:0引线:49158副本:4915949158 isr:4915949158
现在我的figkakfaè2由于某些原因崩溃了(它运行在49159端口)。
如何用相同的端口重新启动此容器?
如果我再次运行scale命令,我会得到一个新的容器,但Map到另一个主机端口,而zookeeper不会将其作为旧示例。
谢谢。
2条答案
按热度按时间3gtaxfhh1#
如果你使用
net: host
在fig.yml中,所有docker容器都将使用主机的网络堆栈,无需公开端口。这意味着它们不会在重新启动时更改或按比例缩小。您需要弄清楚如何让您的kafka示例使用唯一的端口。http://www.fig.sh/yml.html
anauzrmj2#
最简单的解决方案不是在主机上公开端口,而是在端口9092上访问容器ip上的Kafka(如172.17.0.3或类似的内容)。你可以通过ip检查集装箱
$ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name>
.