docker部署kafka 启动异常:

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

启动成功

 

你可能感兴趣的:(docker)