Linux Ubuntu上使用Docker安装kafka并成功运行

系统环境:Linux Ubuntu 22.04.5 LTS x64-based PC

以下是使用 Docker 安装 Kafka 的详细步骤:

1. 确保已安装 Docker

在开始之前,请确保您已经安装了 Docker。您可以在命令行中输入以下命令来检查 Docker 是否已成功安装:

docker version

如果尚未安装,请先安装 Docker。

2. 拉取 Zookeeper 和 Kafka 镜像

Kafka 依赖于 Zookeeper 来管理集群元数据,因此需要先安装 Zookeeper。运行以下命令拉取 Zookeeper 和 Kafka 的 Docker 镜像:

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

3. 创建 Zookeeper 容器

运行以下命令创建并启动 Zookeeper 容器:

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

4. 创建 Kafka 容器

创建 Kafka 容器时,需要指定与 Zookeeper 的连接以及 Kafka 的监听地址等参数。运行以下命令:

docker run -d --name kafka \
  --publish 9092:9092 \
  --link zookeeper \
  --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
  --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
  --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://124.71.60.238:9092 \
  --env KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT \
  --env KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT \
  --env KAFKA_BROKER_ID=0 \
  --volume /etc/localtime:/etc/localtime \
  wurstmeister/kafka
  • --link zookeeper:将 Kafka 容器与 Zookeeper 容器连接。
  • KAFKA_ZOOKEEPER_CONNECT:指定 Zookeeper 的地址。
  • KAFKA_ADVERTISED_LISTENERS:指定 Kafka 的监听地址,暴露给外网的监听地址。
  • KAFKA_LISTENERS:指定 Kafka 的监听地址。

通过docker ps -a查看两个组件的运行情况,STATUS是UP,说明运行成功。如果STATUS是exit,说明启动失败。
如果启动失败,通过docker logs kafka查看错误日志。

5. 验证 Kafka 服务

进入 Kafka 容器的命令行:

docker exec -it kafka /bin/bash

然后在容器内运行以下命令创建一个主题并测试生产者和消费者:

# 创建主题
kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

# 启动生产者
kafka-console-producer.sh --broker-list localhost:9092 --topic test

# 在另一个终端启动消费者
kafka-console-consumer.sh --topic test --bootstrap-server localhost:9092 --group test-group-1

如果生产者和消费者能够正常通信,则说明 Kafka 安装成功。
如果不能正常通信,可能是网络问题。其它,确认配置无误后,尝试删除zookeeper、kafka,再重新运行起来。

6. 使用 Docker Compose(可选)

如果您希望更方便地管理 Kafka 和 Zookeeper 的启动和停止,可以使用 Docker Compose。创建一个 docker-compose.yml 文件,内容如下:

version: '3.8'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
    depends_on:
      - zookeeper

然后运行以下命令启动 Kafka 和 Zookeeper:

docker-compose up -d

注意事项

  • 如果 Kafka 无法连接 Zookeeper,请检查 /etc/hosts 文件,确保 Zookeeper 的主机名映射正确。
  • 在生产环境中,建议使用 Kafka 的 KRaft 模式(无 Zookeeper),并通过 Docker ComposeKubernetes 部署。

其他常用命令

docker ps -a 查看docker管理容器
docker start zookeeper:通过容器名启动zookeeper
docker stop zookeeper
docker start kafka
docker stop kafka
docker rm kafka
docker inspect kafka:查看配置
docker logs kafka:查看日志
docker logs -f kafka:查看实时日志
docker exec -it kafka /bin/bash:进入kafka命令行
kafka-topics.sh --list --bootstrap-server localhost:9092 :查询所有已创建的主题

posted @ 2025-06-14 15:02  抒写  阅读(432)  评论(0)    收藏  举报