Docker环境下安装Zookeeper和Kafka
下载 Docker 镜像:
[root@centos-101 ~]# docker pull wurstmeister/zookeeper:latest
[root@centos-101 ~]# docker pull wurstmeister/kafka:latest
查看下载完成的Docker 镜像:
docker images
下面分别启动Zookeeper 和 kafka 容器,这一步骤可以忽略。直接通过 docker-compose 命令来启动容器。
创建并启动容器
先启动Zookeeper:
[root@centos-101 ~]# docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper:latest
在启动kafka 容器:
创建 docker-compose.yml 文件
在/root/目录下,创建kafka 目录(mkdir):
[root@centos-101 kafka]# pwd
/root/kafka
然后在 kafka 子目录下,创建 docker-compose.yml 文件,如下所示:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.56.101
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
其中 KAFKA_ADVERTISED_HOST_NAME: 192.168.56.101 根据具体的环境,设置对应的IP 地址。
参考官方的docker-compose.yml文件:
https://raw.githubusercontent.com/wurstmeister/kafka-docker/master/docker-compose.yml
启动 docker-compose
[root@centos-101 kafka]# docker-compose up -d
Creating kafka_zookeeper_1 ... done
Creating kafka_kafka_1 ... done
查看启动的zooker/kafka 容器:
docker ps
也可以访问http://192.168.56.101:9000/#/containers 【portainer容器】,查看相应的容器:
向 kafka 发生测试消息
可以进入 kafka 容器:
docker exec -it kafka_kafka_1 /bin/bash
进入kafka 所在目录,以及查看kafka版本:
查看bin 目录:
bash-4.4# ls bin
connect-distributed.sh kafka-reassign-partitions.sh
connect-standalone.sh kafka-replica-verification.sh
kafka-acls.sh kafka-run-class.sh
kafka-broker-api-versions.sh kafka-server-start.sh
kafka-configs.sh kafka-server-stop.sh
kafka-console-consumer.sh kafka-streams-application-reset.sh
kafka-console-producer.sh kafka-topics.sh
kafka-consumer-groups.sh kafka-verifiable-consumer.sh
kafka-consumer-perf-test.sh kafka-verifiable-producer.sh
kafka-delegation-tokens.sh trogdor.sh
kafka-delete-records.sh windows
kafka-dump-log.sh zookeeper-security-migration.sh
kafka-log-dirs.sh zookeeper-server-start.sh
kafka-mirror-maker.sh zookeeper-server-stop.sh
kafka-preferred-replica-election.sh zookeeper-shell.sh
kafka-producer-perf-test.sh
(1)创建一个topic 为 mykafka。
bash-4.4# bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka
Created topic "mykafka".
(2)查看当前的 topic 列表。
bash-4.4# bin/kafka-topics.sh --list --zookeeper zookeeper:2181
__consumer_offsets
mykafka
(3)运行一个消息生产者,指定topic 为刚刚创建的 mykafka。同时,输入一些测试消息。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafka
>hello rickie
(输入若干条消息后 按^C 退出发布)
(4)运行一个消息生产者,指定 topic 为刚刚创建的 mykafka。可以接收到生产者发送的消息。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mykafka --from-beginning
hello rickie
这样,kafka 环境已经ready 了(部署正常)。
停止 docker-compose
在你的项目路径下使用 docker-compose down。
[root@centos-101 kafka]# docker-compose down
Stopping kafka_zookeeper_1 ... done
Stopping kafka_kafka_1 ... done
Removing kafka_zookeeper_1 ... done
Removing kafka_kafka_1 ... done
Removing network kafka_default