拉取镜像
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
启动镜像
docker run --name zookeeper -p 12181:2181 -d wurstmeister/zookeeper:latestdocker run -p 19092:9092 --name kafka1 -d -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=宿主机ip:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://宿主机ip:19092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
docker run -p 19093:9093 --name kafka2 -d -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=宿主机ip:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://宿主机ip:19093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 wurstmeister/kafka:latest
docker run -p 19094:9094 --name kafka3 -d -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=宿主机ip:12181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://宿主机ip:19094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 wurstmeister/kafka:latest//如果有其他问题可以使用查找log
docker logs 容器名
//进入容器内部
docker exec -i -t 容器名 /bin/bash
敲黑板
-e KAFKA_ZOOKEEPER_CONNECT=127.0.0.1 是错误的,这样会使用kafka镜像自身的ip,kafka连接不到zk的地址就报超时了。-e KAFKA_ZOOKEEPER_CONNECT=宿主机ip
如果你好奇心重,你可以这样改,不要问我怎么知道的
docker inspect 容器名字
你就可以获得到配置文件的路径
此时你需要进入docker虚拟机
以mac为例:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/lsscreen tty//此时可能会出现一个新的命令行,或者是空白的,此时按一下回车键,就进入了docker虚拟机//cd到刚刚我们查找到的路径
cd /var/lib/docker/containers/5caeea4c416f5caf7af4e94329a99cf7
6488d98d3db866d2cae64e2f3095233cls//修改保存退出
vi config.v2.json//快捷键:vi后输入 /要查找的关键字 例如/ZOO 可以快速定位到要修改的地方//control+a+k 可退出当前的docker虚拟机
//重启一下docker服务
推荐一个好用的小工具kafka Tool...