Docker Compose是一个用来定义和运行复杂应用的Docker工具。
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
注意:使用 docker-compose 搭建,需要先安装
# 官方地址
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 国内镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
授权
# 授权
sudo chmod +x /usr/local/bin/docker-compose
# 查看一下version,显示有版本号那就说明安装成功了
docker-compose version
创建目录
mkdir /usr/local/docker/kafka
进入目录
cd /usr/local/docker/kafka
创建 docker-compose 文件
vim docker-compose.yml
温馨提示
("//" 不要删 “服务器ip” 替换即可)
(“zookeeper容器ip” 需要启动 zookeeper 之后查询 启动和查询方法在下面 ↓ 直接替换 )
version: '3'
networks:
docker_network:
external: false
services:
zookeeper:
image: wurstmeister/zookeeper
networks:
- docker_network
container_name: zookeeper
ports:
- 12181:2181
environment:
- TZ=Asia/Shanghai
kafka:
image: wurstmeister/kafka
networks:
- docker_network
container_name: kafka00
ports:
- 19090:19090
environment:
- TZ=Asia/Shanghai
- KAFKA_BROKER_ID=0
- KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19090
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19090
kafka1:
image: wurstmeister/kafka
networks:
- docker_network
container_name: kafka01
ports:
- 19091:19091
environment:
- TZ=Asia/Shanghai
- KAFKA_BROKER_ID=1
- KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19091
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19091
kafka2:
image: wurstmeister/kafka
networks:
- docker_network
container_name: kafka02
ports:
- 19092:19092
environment:
- TZ=Asia/Shanghai
- KAFKA_BROKER_ID=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19092
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19092
docker-compose up -d zookeeper
查询容器ip
docker inspect 容器id
/// 运行完 翻到最下面 查看容器ip 并保存备用
(重点)修改 docker-compose 文件 中 zookeeper ip
docker-compose up -d kafka
docker-compose up -d kafka1
docker-compose up -d kafka2
进入kafka00容器
docker exec -it kafka00 bash
创建一个主题
/opt/kafka/bin/kafka-topics.sh --create --zookeeper zk容器ip:2181 --replication-factor 3 --partitions 5 --topic TestTopic
建议在打开两个ssh连接的窗口 (自行进入)
查看主题
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper zk容器ip:2181 --topic TestTopic
其他的几个容器也应该是一样的。。。省略
记得放开19090、19091、19092端口 接下来,分别在kafka00上运行一个生产者,kafka01、02上分别运行一个消费者:
/opt/kafka/bin/kafka-console-producer.sh --broker-list 服务器ip:当前kafka端口(9090) --topic TestTopic
kafka01:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器ip:当前kafka端口(9091) --topic TestTopic --from-beginning
kafka02:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器ip:当前kafka端口(9092) --topic TestTopic --from-beginning
然后在生产者发消息:
看两个消费者是否都能接收
安装完成
kafka-map 可视化工具
只需一行命令
// 这里因为 8080端口占用 故映射其他端口 根据个人爱好设置
docker run -d -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --name kafka-map --restart always dushixiang/kafka-map:latest