zookeeper采用官方版本:3.5.7
docker run -d --cpus 0.5 -m 200M \
--restart always \
-u root \
--name zookeeper \
-p 2181:2181 \
-p 2888:2888 \
-p 3888:3888 \
-v /etc/localtime:/etc/localtime \
-v /mnt/zookeeper-3.5.7/data:/data \
-v /mnt/zookeeper-3.5.7/log:/datalog \
-v /mnt/zookeeper-3.5.7/conf:/conf \
zookeeper:3.5.7
kafka则使用github使用率较高的wurstmeister/kafka,相对简单,更新到位
docker run --cpus 4 -d -m 4g \
--restart always \
--name kafka-2.5.0 \
-p 9092:9092 \
--link zookeeper \
-e KAFKA_HEAP_OPTS="-Xmx2g -Xms2g" \
-e KAFKA_ZOOKEEPER_CONNECT=172.19.**.**:2181 \
-e KAFKA_ADVERTISED_HOST_NAME=47.100.***.*** \
-e KAFKA_ADVERTISED_PORT=9092 \
-e KAFKA_LOG_RETENTION_BYTES=10737418240 \
-e KAFKA_LOG_RETENTION_HOURS=24 \
-e KAFKA_DELETE_TOPIC_ENABLE=true \
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
-e KAFKA_LOG_DIRS="/kafka/kafka-logs-2.5.0"
-v /etc/localtime:/etc/localtime \
-v /mnt/kafka-2.5.0:/kafka \
-v /var/run/docker.sock:/var/run/docker.sock \
wurstmeister/kafka:2.12-2.5.0
以上,适用于正式环境,单机版吞吐量可以达到千万级,集群版本,只需要按照官方说明配置多启动几个即可,可以参考docker hub 中的 配置说明进行部署。
kafka的版本和zookeeperd版本 怎么选择呢
参考:Kafka中Zookeeper的稳定版本
不指定容器的网络吗
走云服务器的话一般只有一个网络,不需要指定。
我创建topic是不是需要进入到容器内部进行创建呢,如果是的话,容器重启,创建的topic是不是丢失呢
创建Topic可以通过代码或者进入容器内部,容器重启不会影响Topic。并且在kafka文件夹下可以看的到。
谢谢您的热心解答
我可以把KAFKA_ADVERTISED_HOST_NAME与KAFKA_ADVERTISED_PORT去掉,换成advertised.listeners吗?advertised.listeners可以写成内网ip吗
advertised.listeners已经弃用了,参见:https://www.orchome.com/500
如果还有问题,到问题专区详细描述下吧,贴上配置。
我想问一下,这样创建容器后,如果容器重启,数据会丢失吗?
不会,数据会持久化在磁盘,不删除kafka和zookeeper的文件夹就行
好东西
实用文章,赞~