[Docker]使用Docker部署Kafka

767 阅读2分钟

ChatGPT Image 2025年12月29日 11_34_23.png

Kafka 是一个分布式流处理平台,它依赖于 ZooKeeper 作为其协调服务。在 Kafka 集群中,ZooKeeper 负责管理和协调 Kafka 的各个节点。

单机部署

因此,要在 Docker 容器中启动 Kafka,通常需要同时启动一个 ZooKeeper 服务作为其依赖。可以按照以下步骤来启动 Kafka 容器,并确保同时启动了 ZooKeeper 服务:

  1. 创建一个 Docker 网络:在终端中运行以下命令,创建一个 Docker 网络,用于容器之间的通信:

    docker network create kafka-net
    
  2. 启动 ZooKeeper 容器:使用以下命令启动一个 ZooKeeper 容器,并将其连接到创建的网络:

    docker run -d --name zookeeper --network kafka-net -p 2181:2181 -p 2888:2888 -p 3888:3888 zookeeper
    
  3. 启动 Kafka 容器:使用以下命令启动一个 Kafka 容器,并将其连接到创建的网络和 ZooKeeper 服务:

    docker run -d --name kafka --network kafka-net -p 9092:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 confluentinc/cp-kafka
    

在上述步骤中,我们使用了 --network 参数将容器连接到同一个网络中,使得 Kafka 容器可以与 ZooKeeper 容器进行通信。Kafka 容器的环境变量 KAFKA_ZOOKEEPER_CONNECT 设置了 ZooKeeper 的连接地址。

Docker Compose集群部署

创建 docker-compose.yml 配置文件如下:

version: '3.8'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    restart: always
  kafka1:
    image: wurstmeister/kafka
    depends_on: [ zookeeper ]
    container_name: kafka1
    ports:
      - "9091:9091"
    environment:
      HOSTNAME: kafka1
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9091
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9091
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafka
    extra_hosts:
      kafka1: 116.62.145.30
  kafka2:
    image: wurstmeister/kafka
    depends_on: [ zookeeper ]
    container_name: kafka2
    ports:
      - "9092:9092"
    environment:
      HOSTNAME: kafka2
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafka
    extra_hosts:
      kafka2: 116.62.145.30
  kafka3:
    image: wurstmeister/kafka
    depends_on: [ zookeeper ]
    container_name: kafka3
    ports:
      - "9093:9093"
    environment:
      HOSTNAME: kafka3
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9093
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafka
    extra_hosts:
      kafka3: 116.62.145.30

启动容器:

docker-compose up -d