Docker容器刚开始使用,仅仅只了解一些简单命令和原理.很多东西也是从东拼西凑的.主要是记录下怎么走出坑的.
1.搜索镜像,包括kafka,zookeeper,还有kafka管理工具
docker search kafka
docker search zookeeper
docker search kafka-manager
2.拉取镜像(根据排名选择第一个,虽然不知道为啥,排在第一不是没有道理的)
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
docker pull sheepkiller/kafka-manager
3.启动容器
3.1启动kafka
docker run --name kafka \
-p 9092:9092 \
-e KAFKA_ADVERTISED_HOST_NAME=kafka01 \
-e KAFKA_CREATE_TOPICS="test:1:1" \
-e KAFKA_ZOOKEEPER_CONNECT=服务器IP:zookeeper端口 \
-d wurstmeister/kafka
3.2启动zookeeper
docker run --name zookeeper \
--restart always \
-p 2181:2181 \
-d wurstmeister/zookeeper
3.3启动kafka管理工具
docker run -itd \
--restart=always \
--name=kafka-manager \
-p 9000:9000 \
-e ZK_HOSTS="服务器IP:zookeeper端口" \
sheepkiller/kafka-manager
4.看到容器启动成功,是不是以为大功告成了,你还是太年轻了,测试下先
docker exec -it kafka容器ID /bin/bash
进入容器
4.1 创建一个topic
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 服务器IP:zookeeper端口 --replication-factor 1 --partitions 1 --topic my-test
4.2 查看topic列表
/opt/kafka/bin/kafka-topics.sh --list --zookeeper 服务器IP:zookeeper端口
4.3发送消息
/opt/kafka/bin/kafka-console-producer.sh --broker-list 服务器IP:kafka端口 --topic my-test
4.4接收消息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器IP:kafka端口 --topic my-test --from-beginning
这是发送消息的时候的错误信息(做了这么久软件设计师这点小错误算啥,屁巅屁蛋去百度...什么百度,现在学会升级了,google一下)一顿操作之后,迷迷糊糊的似乎发现了什么.关键是service.properties的配置问题,然后各种尝试修改配置
listeners=PLAINTEXT://:9092解开注释改成 listeners=PLAINTEXT://localhost:9092
然后再尝试发送消息:
ERROR Error when sending message to topic my-topic with key: null, value: 9 bytes with error: Batch Expired (org.apache.kafka.clients.
producer.internals.ErrorLoggingCallback)
错误变成了上面这种,继续google
把localhost换成ip
换成容器的hostname
尝试了一天无果,从入门到放弃这个梗告诉我们不要在一颗树上吊死
还有一棵树没试过 docker-compose
1.拉取镜像步骤同上
2.创建一个文件夹,并编写docker-compose.yml文件
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
depends_on: [ zookeeper ]
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 你的服务器IP
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
3.在该文件路径下执行打包命令
docker-compose build
4.在该文件路径下执行启动服务命令
docker-compose up -d
网友评论