【Kafka基础】Docker Compose快速部署Kafka单机环境

发布于:2025-04-05 ⋅ 阅读:(44) ⋅ 点赞:(0)

1 准备工作

1.1 安装Docker和Docker Compose

2 编写Docker Compose文件

# 创建目录并编写docker-compose.yml
cd /export/home
mkdir kafka_docker
cd kafka_docker
cat >docker-compose.yml<<EOF
version: '3.8'

services:
  zookeeper:
    image: bitnami/zookeeper:3.8
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes  # 生产环境应设为no并配置认证
      - ZOO_DATA_DIR=/bitnami/zookeeper/data
    volumes:
      - ./data/zookeeper:/bitnami/zookeeper
    user: root  # 临时解决权限问题,生产环境应配置正确权限
    networks:
      - kafka-net

  kafka:
    image: bitnami/kafka:3.6
    container_name: kafka
    ports:
      - "9092:9092"
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.10.30:9092
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
    volumes:
      - ./data/kafka:/bitnami/kafka
    user: root
    depends_on:
      - zookeeper
    networks:
      - kafka-net

networks:
  kafka-net:
    driver: bridge
EOF

3 拉取镜像并启动服务

3.1 拉取镜像

# 手动拉取镜像
docker pull bitnami/zookeeper:3.8
docker pull bitnami/kafka:3.6

[root@node1 ~]# docker pull bitnami/zookeeper:3.8
3.8: Pulling from bitnami/zookeeper
4bb5b9792f2b: Downloading [=================>                                 ]  101.2MB/297.1MB
4bb5b9792f2b: Downloading [============================================>      ]  265.1MB/297.1MB
4bb5b9792f2b: Extracting [===============================================>   ]  281.9MB/297.1MB
4bb5b9792f2b: Pull complete 
Digest: sha256:4d450d4b1dab610e1012993d2ea78ba00a516b63e74214a57fef40c060ce4986
Status: Downloaded newer image for bitnami/zookeeper:3.8
docker.io/bitnami/zookeeper:3.8
[root@node1 ~]# 

[root@node1 kafka_docker]# docker pull bitnami/kafka:3.6
3.6: Pulling from bitnami/kafka
43ffa9935816: Downloading [================>                                  ]  126.2MB/379.1MB
43ffa9935816: Downloading [========================================>          ]  309.9MB/379.1MB
43ffa9935816: Extracting [===========================================>       ]    327MB/379.1MB
43ffa9935816: Pull complete 
Digest: sha256:287cec8bf1b254efe016ec66ea77628e31f242b09f3c68a15eec74d93c21a410
Status: Downloaded newer image for bitnami/kafka:3.6
docker.io/bitnami/kafka:3.6
[root@node1 kafka_docker]# 

3.2 启动服务

# 创建持久化目录
mkdir -p ./data/zookeeper ./data/kafka

# 启动服务(后台运行)
docker-compose up -d

# 查看容器状态
docker ps -a
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                                                     NAMES
f0762029c4aa   bitnami/kafka:3.6       "/opt/bitnami/script…"   25 seconds ago   Up 23 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                                 kafka
d821a448f5b2   bitnami/zookeeper:3.8   "/opt/bitnami/script…"   2 minutes ago    Up 24 seconds   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp   zookeeper
[root@node1 ~]# 

4 验证Kafka功能

4.1 创建Topic

docker exec -it kafka \
  bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"
  
  [root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"
>   bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"
Created topic test-topic.
[root@node1 ~]# 

4.2 生产消息

docker exec -it kafka \
  bash -c "kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic"
# 输入任意消息后按 Ctrl+C 退出

[root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic"
>test1
>test2
>test3
>^C[root@node1 ~]# 

4.3 消费消息

docker exec -it kafka \
  bash -c "kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning"
  
>^C[root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning"
test1
test2
test3

5 总结

通过上述步骤,您已成功部署了一个包含 ZooKeeper、Kafka单机环境。此方案适用于:
  • 开发测试:快速验证消息队列功能
  • 本地学习:理解 Kafka 核心机制
  • 原型验证:模拟生产环境行为

网站公告

今日签到

点亮在社区的每一天
去签到