docker部署kafka

本文详细介绍如何使用Docker和docker-compose搭建Kafka集群,包括镜像拉取、配置文件编写、服务启动与测试,以及Kafka Manager界面的部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

镜像拉取

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

定义docker-compose.yml

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka:2.12-2.0.1
    depends_on: [ zookeeper ]
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.171.45
      # KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /home/iie4bu/ddy/kafka/docker.sock:/var/run/docker.sock

[注] 192.168.171.45是本机(vm)地址。

在docker-compose.yml文件目录进行服务打包

(base) iie4bu@swarm-manager:~/ddy/kafka$ docker-compose build
zookeeper uses an image, skipping
kafka uses an image, skipping

启动服务

(base) iie4bu@swarm-manager:~/ddy/kafka$ docker-compose up -d
Starting kafka_zookeeper_1 ... done
Creating kafka_kafka_1     ... done

在这里插入图片描述

启动测试

记住启动的启动名称,kafka为 kafka_kafka_1 ,zookeeper 为 kafka_zookeeper_1 .
如果docker-compose正常启动,此时docker ps会看到以上两个容器。进入kafka容器。

docker exec -it kafka_kafka_1 bash

创建一个topic:

$KAFKA_HOME/bin/kafka-topics.sh --create --topic test --partitions 4 --zookeeper kafka_zookeeper_1:2181 --replication-factor 1

注意–zookeeper后面的参数为,容器的name
查看刚刚创建的topic:

$KAFKA_HOME/bin/kafka-topics.sh --zookeeper kafka_zookeeper_1:2181 --describe --topic test

发布信息:

$KAFKA_HOME/bin/kafka-console-producer.sh --topic=test --broker-list kafka_kafka_1:9092

接收消息

$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka_kafka_1:9092 --from-beginning --topic test

kafka集群管理界面

docker run -itd --name=kafka-manager -p 9001:9000 -e ZK_HOSTS=“192.168.171.45:2181” sheepkiller/kafka-manager

<think>好的,我现在需要帮助用户了解如何使用Docker部署Kafka。首先,用户提到了参考中的两个引用,都是关于Docker部署Kafka的内容,我需要结合这些信息来构建答案。 首先,我应该先回忆一下Docker部署Kafka的基本步骤。通常,Kafka依赖Zookeeper,所以需要同时部署两者。用户提供的引用里提到了使用docker-compose.yml配置文件,这可能是一个关键点。根据引用1,使用docker-compose可以创建并启动Zookeeper和Kafka的容器,这应该是标准做法。 接下来,我需要确保步骤正确。首先,创建Docker网络,这样容器之间可以通信。引用2提到需要创建Docker网络,这可能是在docker-compose中定义的网络,或者需要预先创建。不过通常docker-compose会自动处理网络,但有时候用户可能需要自定义。可能需要检查这一点。 然后是编写docker-compose.yml文件。这里需要确定正确的镜像版本。比如,使用confluentinc的镜像还是wurstmeister的镜像?用户提供的引用没有明确说明,但常见的教程中常用wurstmeister/kafka和zookeeper。不过引用1中的例子可能使用的是confluentinc的镜像,或者其他的。需要确认。不过为了通用性,可能使用较常见的配置。 另外,用户可能希望示例配置是可直接运行的,所以需要确保docker-compose.yml的语法正确。比如,定义服务、端口映射、环境变量等。Kafka需要配置环境变量如KAFKA_ADVERTISED_LISTENERS,这样才能被外部访问,这点很重要,否则客户端可能无法连接。 然后,启动容器的命令是docker-compose up -d,这应该没问题。测试部分可能需要使用kafka的命令行工具来创建主题、生产者和消费者,或者使用Python客户端。用户引用的参考2提到了Python使用Kafka的基础用法,所以可能需要在回答中包含Python的示例代码,但用户的问题主要是部署,所以可能放在相关问题里。 另外,用户可能遇到的问题包括网络配置不正确、端口未暴露、环境变量设置错误等,是否需要给出常见问题的解决方法?不过用户当前的问题主要是部署教程,所以可能先专注于步骤,然后在相关问题中提及。 还要注意,引用中的例子可能使用了特定的配置,比如Zookeeper和Kafka的端口映射,比如2181和9092,这些是默认端口,需要确保在docker-compose.yml中正确映射。同时,KAFKA_ADVERTISED_LISTENERS需要设置为宿主机的IP或者Docker主机名,否则外部客户端无法连接。这里可能需要提醒用户根据实际情况修改。 总结步骤应该是: 1. 安装DockerDocker Compose。 2. 创建docker-compose.yml文件,定义Zookeeper和Kafka服务。 3. 启动容器。 4. 测试Kafka是否正常运行。 在测试部分,可以建议使用kafka命令行工具进入容器执行命令,或者使用Python客户端进行测试。比如,使用kafka-python库创建生产者和消费者,如引用2提到的。 最后,生成相关问题,可能需要包括优化配置、常见错误、集群部署、监控、与Python集成等。 需要确保所有的命令和配置正确,语法正确,比如在docker-compose.yml中的缩进是否正确,环境变量是否正确设置。同时,提醒用户如果遇到问题,检查端口是否被占用,防火墙设置,以及advertised.listeners的配置是否正确。</think>以下是如何使用Docker部署Kafka的详细教程及配置示例: ### 一、Docker部署Kafka步骤 #### 1. 创建Docker网络(可选但推荐) ```bash docker network create kafka-net ``` #### 2. 编写`docker-compose.yml`文件 ```yaml version: '3' services: zookeeper: image: bitnami/zookeeper:latest container_name: zookeeper ports: - "2181:2181" networks: - kafka-net environment: ALLOW_ANONYMOUS_LOGIN: "yes" kafka: image: bitnami/kafka:latest container_name: kafka ports: - "9092:9092" networks: - kafka-net environment: KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 depends_on: - zookeeper networks: kafka-net: driver: bridge ``` #### 3. 启动服务 ```bash docker-compose up -d ``` #### 4. 验证服务状态 ```bash docker ps -a | grep -E "kafka|zookeeper" ``` ### 二、基础功能测试 #### 1. 创建测试主题 ```bash docker exec -it kafka /opt/bitnami/kafka/bin/kafka-topics.sh \ --create --topic test-topic \ --bootstrap-server localhost:9092 \ --partitions 1 --replication-factor 1 ``` #### 2. 启动生产者 ```bash docker exec -it kafka /opt/bitnami/kafka/bin/kafka-console-producer.sh \ --topic test-topic \ --bootstrap-server localhost:9092 ``` #### 3. 启动消费者 ```bash docker exec -it kafka /opt/bitnami/kafka/bin/kafka-console-consumer.sh \ --topic test-topic \ --bootstrap-server localhost:9092 \ --from-beginning ``` ### 三、Python客户端示例 ```python from kafka import KafkaProducer, KafkaConsumer # 生产者 producer = KafkaProducer(bootstrap_servers='localhost:9092') producer.send('test-topic', b'Hello Kafka') producer.flush() # 消费者 consumer = KafkaConsumer('test-topic', bootstrap_servers='localhost:9092') for msg in consumer: print(f"Received: {msg.value.decode('utf-8')}") ``` ### 配置说明 1. `KAFKA_CFG_ADVERTISED_LISTENERS`需设置为宿主机的IP或域名,若在远程服务器部署应改为服务器公网IP 2. 持久化数据可添加卷映射: ```yaml volumes: - ./kafka_data:/bitnami/kafka ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值