docker安装kafka、zookeeper
基于win10,docker desktop
基于linux也是一样的处理方式
(win10通过Docker搭建LNMP环境全流程)[https://blog.csdn.net/fendouweiqian/article/details/128062543]
docker安装kafka、zookeeper
创建共享网络
为的是容器内可以通讯
docker network create kafka-zk-net
安装zookeeper
为什么用 wurstmeister/zookeeper,因为zookeeper没有发现官方镜像,就统一用该镜像
docker run -d -p 2181:2181 --network kafka-zk-net -v F:\docker-data\zookeeper\data:/opt/zookeeper/data --name zookeeper wurstmeister/zookeeper:3.4.6
安装zookeeper
docker run -d -p 9092:9092 --network kafka-zk-net -v F:\docker-data\kafka2.8\data:/opt/kafka/data -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_LOG_DIRS=/opt/kafka/data -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --name kafka wurstmeister/kafka:2.13-2.8.1
测试
# 进入容器
docker exec -it kafka bash
# 进入kafka的bin目录
cd /opt/kafka/bin
# 创建话题
./kafka-topics.sh --zookeeper zookeeper:2181 --topic test1 --create --replication-factor 1 --partitions 1
# 生产者生产话题
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
# 消费者消费话题
# --from-beginning 从头开始消费
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
常见问题
没有指定工作目录,zookeeper、kafka的工作目录在哪
可以通过命令来查看
docker inspect 容器ID/容器名称
系统内核
注意,该方法安装出来的系统内核为: Alpine Linux
查看内核方式
cat /etc/issue
如果需要安装软件使用的命令为
# exmaple:apk add iputils
# add command "ping"
apk add 软件
删除主题后,kafka崩溃
执行删除
./kafka-topics.sh --delete --zookeeper zookeeper:2181 --topic test1
出现的问题,kafka立马崩溃。
不能重启,提示异常,类似如下。忘记截取自己的图了
ERROR Error while renaming dir for foo-0 in log dir C:\confluent-4.1.1\data\kafka (kafka.server.LogDirFailureChannel)
解决历程
- 删除 F:\docker-data\kafka2.8\data kafka的数据,然后重启zookeeper跟kafka,失败
- 重复方案一,并且重启docker,失败
- 解决方案
强调:我是测试环境,生产环境不要这样做!!! 起码要备份- 删除 F:\docker-data\kafka2.8\data kafka的数据
- 进入zookeeper容器,删除zookeeper数据日志
cd /opt/zookeeper-3.4.6/data # 我的是 version-2 rm version-2
- 重启zookeeper,kafka
stockflow 解决办法