1.下载kafka和zookeeper镜像
直接下载最新的zookeeper镜像,由于我已经下载过了,这里只做了更新
1docker pull zookeeper
下载kafka镜像,这里使用wurstmeister/kafka的最新镜像
1docker pull wurstmeister/kafka
下载完成后,运行docker images查看下载的镜像
|
|
2.启动容器
由于要涉及到zookeeper和kafka之间的通信,所以我们运用docker内部容器通信机制先新建一个网络。
新建网络
1docker network create app
运行 docker network ls查看新建的网络
1docker network ls
运行docker network inspect app查看网络详细信息
1docker network inspect app
从详细信息中可以看到其连接的containers为空,说明还没有容器连接进来
新建zookeeper和kafka容器
创建zookeeper容器
1docker run --net=app --name zookeeper -p 2181 -t zookeeper创建kafka容器,注意由于使用的是docker创建的网络,所以KAFKA_ADVERTISED_HOST_NAME参数需要设置为0.0.0.0
123456docker run --net=app --name kafka -p 9092 \--link zookeeper \--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \--env KAFKA_ADVERTISED_HOST_NAME=0.0.0.0 \--env KAFKA_ADVERTISED_PORT=9092 \wurstmeister/kafka:latest运行docker ps查看正在运行的容器
1docker ps
3.测试发送消息和接受消息
在命令行下运行 docker exec -it kafka /bin/bash命令,进入kafka容器内部
|
|
kafka文件存放在/opt/kafka_2.12-0.11.0.1/目录下
|
|
调用kafka-topics.sh创建一个mykafka的topic
|
|
调用kafka-console-producer.sh运行一个生产者
|
|
启动另一个窗口,按照上边的步骤启动kafka容器的命令行,执行如下消费者命令
|
|
在生产者窗口发送一条命令,查看消费者端口是否接到命令