docker部署kafka

单节点部署Zookeeper和Kafka

参考文章:https://blog.csdn.net/qyj19920704/article/details/148240392

1、创建docker-compose.yml文件

使用的是 Confluent Platform 的 Kafka 镜像

bash 复制代码
version: "3"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.4.0
    platform: linux/amd64 # 明确指定平台
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      # 生产环境建议增加以下配置
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_SERVERS: "zookeeper:2888:3888"

  kafka:
    image: confluentinc/cp-kafka:7.4.0
    platform: linux/amd64
    hostname: kafka
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
      - "29092:29092" # 用于容器间通信
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://kafka:29092
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      # 内存配置(根据实际情况调整)
      KAFKA_HEAP_OPTS: "-Xmx1G -Xms1G"
2、启动服务
bash 复制代码
docker-compose up -d
3、进入容器
bash 复制代码
docker-compose exec kafka bash
4、新建topic
bash 复制代码
kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

也可不进入容器新建topic

查看topic情况

bash 复制代码
docker-compose exec kafka kafka-topics --describe --topic test-topic --bootstrap-server localhost:9092
5、新建生产者
bash 复制代码
kafka-console-producer --topic test-topic --bootstrap-server localhost:9092

也可容器外新建生产者

bash 复制代码
docker-compose exec kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092
6、新建消费者
bash 复制代码
# 方法 1:从最早的消息开始消费(等待新消息)
docker-compose exec kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092 --from-beginning

# 方法 2:实时消费新消息(先启动消费者,再发送消息)
docker-compose exec kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092

# 方法 3:显示 key 和 value
docker-compose exec kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092 --from-beginning --property print.key=true --property print.value=true

# 方法 4:显示时间戳
docker-compose exec kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092 --from-beginning --property print.timestamp=true
相关推荐
byte轻骑兵3 小时前
WSL+openEuler云原生实践:Docker全流程部署与多容器编排深度评测
docker·云原生·容器·openeuler
Knight_AL5 小时前
Docker 加载镜像时报 no space left on device 的彻底解决方案
docker·容器·eureka
人生苦短1286 小时前
Kubernetes(k8s)
云原生·容器·kubernetes
喜欢你,还有大家12 小时前
Docker-仓库-镜像制作
运维·docker·容器
武子康14 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
编啊编程啊程15 小时前
【029】智能停车计费系统
java·数据库·spring boot·spring·spring cloud·kafka
计算机小手18 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
岚天start18 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
xyhshen18 小时前
记录一次K8S跨命名空间访问 xxx.xxx.svc.cluster.local 类似内部服务不通的问题
云原生·容器·kubernetes