docker 安装zookeeper+kafka单节点

1. 下载镜像
# zookeeper镜像
docker pull wurstmeister/zookeeper
# kafka镜像
docker pull wurstmeister/kafka
# kafka管理镜像
docker pull sheepkiller/kafka-manager
2. 已下载的镜像
docker images

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
wurstmeister/kafka          latest              c364cbed5b86        13 days ago         421MB
wurstmeister/zookeeper      latest              2a7f6fc5c8a1        2 weeks ago         150MB
sheepkiller/kafka-manager   latest              4e4a8c5dabab        12 months ago       463MB
3. zookeeper安装
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

查看zookeeper启动日志

docker logs -f zookeeper 

# 开始启动
2019-04-29 03:57:18,342 [myid:] - INFO  [main:QuorumPeerConfig@136] - Reading configuration from: /conf/zoo.cfg
...
...
2019-04-29 03:57:18,425 [myid:] - INFO  [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
# 启动成功

验证:
下载zookeeper图形化客户端工具:ZooInspector

zoo1.png
zoo2.png
4. kafka安装
docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=localhost \
--env KAFKA_ZOOKEEPER_CONNECT=10.30.2.222:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.30.2.222:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" \
--net=host wurstmeister/kafka

注意
1、10.30.2.222是宿主机ip
2、--net=host 表示使用与宿主机网络模式(网络模式有很多种,详细介绍见: Docker:网络模式详解)

查看kafka启动日志

docker logs -f kafka

# 开始启动
Excluding KAFKA_HOME from broker config
[Configuring] 'advertised.host.name' in '/opt/kafka/config/server.properties'
[Configuring] 'port' in '/opt/kafka/config/server.properties'
...
...
[2019-04-29 04:09:49,156] INFO Kafka version: 2.2.0 (org.apache.kafka.common.utils.AppInfoParser)
[2019-04-29 04:09:49,156] INFO Kafka commitId: 05fcfde8f69b0349 (org.apache.kafka.common.utils.AppInfoParser)
[2019-04-29 04:09:49,157] INFO [KafkaServer id=1001] started (kafka.server.KafkaServer)
# 启动成功

验证:
进入kafka容器

docker exec -it kafka /bin/bash
# 进入kafka的bin目录
cd /opt/kafka_2.12-2.2.0/bin/

新建一个test主题,并以生产者身份进行消息生产

./kafka-topics.sh --create --zookeeper 10.30.2.222:2181 --replication-factor 1 --partitions 1 --topic test
./kafka-console-producer.sh --broker-list 10.30.2.222:9092 --topic test
>hello # 发送一条消息并回车
>world

打开一个新的ssh连接,同样进入kafka容器,模拟消费者接收消息

docker exec -it kafka /bin/bash
# 进入kafka的bin目录
cd /opt/kafka_2.12-2.2.0/bin/
# 以消费者身份接收消息
./kafka-console-consumer.sh --bootstrap-server 10.30.2.222:9092 --topic test --from-beginning
hello # 成功接收到消息
world

不断在生产者端发送消息,消费者端可以不断的接收到消息。kafka安装成功!

同样,在zookeeper可视化工具,刷新后可以看到kafka的相关数据节点:


zoo3.png
5. kafka-manager安装
docker run -d --name kafka-manager -e ZK_HOSTS="10.30.2.222:2181" --net=host sheepkiller/kafka-manager
firewall-cmd --add-port=9000/tcp

访问:http://10.30.2.222:9000,并添加一个cluster即可。

你可能感兴趣的:(docker 安装zookeeper+kafka单节点)