Docker 安装部署kafka
1、下载镜像
这里使用了wurstmeister/kafka
docker pull wurstmeister/kafka
在命令中运行docker images验证镜像已经安装完毕
2.启动
启动kafka
docker run -d --name kafka --publish 9092:9092 --link docker_zookeeper --env KAFKA_ZOOKEEPER_CONNECT=192.168.9.101:2182 --env KAFKA_ADVERTISED_HOST_NAME=192.168.9.101 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
报异常:
1).Kafka超时错误:Timed out waiting for connection while in state
因为/etc/resolv.conf中添加了其它的DNS地址,所以导致在Kafka启动时无法解析到集群中的其它节点,我把以下节点注释以后,启动docker start 容器id
2).启动报:Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memor
find kafka-server-start.sh,修改
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
为适合当前服务器的配置,例如export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
启动docker start 容器id
3).java.io.IOException: Connection reset by peer
<1>.开始以为是linux防火墙没开放端口原因,开了端口之后,还是报同一个错误
<2>.后来发现是启动zookeeper命令错误
docker stop zookeeper容器id docker rm zookeeper容器id
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
很多网上是这么写的启动zookeeper,虽然启动了,但是其他程序无法访问
解决方式:修改zookeeper启动命令
docker run -itd --name zookeeper -p 2181:2181 wurstmeister/zookeeper
tips:
1).-it 是允许与容器实例进行交互的,如果不加的话容器里的连接会拒绝
2). -p 端口映射,把容器的端口和宿主机的端口进行映射
Zookeeper地址和端口号做相应更改
移除kafka容器 重新启动
docker run -d --name kafka --publish 9092:9092 --link docker_zookeeper --env KAFKA_ZOOKEEPER_CONNECT=192.168.9.101:2182 --env KAFKA_ADVERTISED_HOST_NAME=192.168.9.101 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest
启动成功
来源:https://blog.csdn.net/qq_39994098/article/details/99575552