-- 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-- 赋予执行权限
chmod +x /usr/local/bin/docker-compose
-- 拉取镜像
docker pull zookeeper:3.4
docker pull wurstmeister/kafka
-- 编写docker-compose.yaml
-- 启动服务
docker run -d zookeeper
-- 测试zookeeper
telnet 127.0.0.1 12181
docker exec -it zoo1 bash ./bin/zkServer.sh status
docker exec -it zoo2 bash ./bin/zkServer.sh status
docker exec -it zoo3 bash ./bin/zkServer.sh status
-- 测试kafka
telnet 127.0.0.1 19092
-- 链接kafka1容器
docker exec -it kafka1 /bin/bash
-- 创建topic
$KAFKA_HOME/bin/kafka-topics.sh --create --topic test --zookeeper zoo1:2181 --replication-factor 1 --partitions 1
-- 查看topic
$KAFKA_HOME/bin/kafka-topics.sh --zookeeper zoo1:2181 --describe --topic test
-- 发布消息
$KAFKA_HOME/bin/kafka-console-producer.sh --topic=test --broker-list kafka1:9092
-- 接收消息
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092 --from-beginning --topic test
mkdir -p /home/docker_zoo_kafka
cat > /home/docker_zoo_kafka/docker-compose.yml <<EOF
version: "2"
services:
zoo1:
image: zookeeper:3.4
container_name: zoo1
restart: always
ports:
- 12181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- /etc/localtime:/etc/localtime
zoo2:
image: zookeeper:3.4
container_name: zoo2
restart: always
ports:
- 22181:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- /etc/localtime:/etc/localtime
zoo3:
image: zookeeper:3.4
container_name: zoo3
restart: always
ports:
- 32181:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- /etc/localtime:/etc/localtime
kafka1:
image: wurstmeister/kafka
container_name: kafka1
restart: always
ports:
- 19092:9092
environment:
KAFKA_HOST_NAME: kafka1
KAFKA_ADVERTISED_HOST_NAME: kafka1
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.19.160.224:19092
KAFKA_ADVERTISED_PORT: 19092
KAFKA_BROKER_ID: 0
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
volumes:
- /etc/localtime:/etc/localtime
links:
- zoo1
- zoo2
- zoo3
kafka2:
image: wurstmeister/kafka
container_name: kafka2
restart: always
ports:
- 29092:9092
environment:
KAFKA_HOST_NAME: kafka2
KAFKA_ADVERTISED_HOST_NAME: kafka2
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.19.160.224:29092
KAFKA_ADVERTISED_PORT: 29092
KAFKA_BROKER_ID: 1
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
volumes:
- /etc/localtime:/etc/localtime
links:
- zoo1
- zoo2
- zoo3
kafka3:
image: wurstmeister/kafka
container_name: kafka3
restart: always
ports:
- 39092:9092
environment:
KAFKA_HOST_NAME: kafka3
KAFKA_ADVERTISED_HOST_NAME: kafka3
KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.19.160.224:39092
KAFKA_ADVERTISED_PORT: 39092
KAFKA_BROKER_ID: 2
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
volumes:
- /etc/localtime:/etc/localtime
links:
- zoo1
- zoo2
- zoo3
EOF
说明:172.19.160.224是宿主机IP