使用docker单机部署kafka,以KRaft模式运行,不使用zookeeper,

  1. 如果是私有化部署,且不能访问公网的情况下,需要自己安装confluentinc/cp-kafka:latest镜像;

  2. 创建docker-compose.yaml文件

    yaml 复制代码
    services:
      kafka:
        image: confluentinc/cp-kafka:latest
        container_name: kafka
        hostname: kafka
        user: root  # 以 root 用户运行
        # 使用主机网络模式,这样容器直接使用宿主机的网络
        network_mode: "host"
        # 注意:在host模式下,端口映射无效,所以移除ports配置
        environment:
          KAFKA_NODE_ID: 1
          KAFKA_PROCESS_ROLES: 'broker,controller'
          # 监听所有网络接口
          KAFKA_LISTENERS: 'PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:29093'
          # 使用宿主机IP作为广告地址
          KAFKA_ADVERTISED_LISTENERS: 'PLAINTEXT://192.168.0.91:9092'
          KAFKA_CONTROLLER_QUORUM_VOTERS: '1@192.168.0.91:29093'
          KAFKA_CONTROLLER_LISTENER_NAMES: 'CONTROLLER'
          KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 'CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT'
          KAFKA_INTER_BROKER_LISTENER_NAME: 'PLAINTEXT'
          KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
          KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
          KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
          KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
          KAFKA_CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk'
          LOG4J_LOGGER_KAFKA: INFO
          LOG4J_LOGGER_ORG_APACHE_KAFKA: INFO
          KAFKA_ZOOKEEPER_CONNECT: ''
        volumes:
          - ./kafka-data:/var/lib/kafka/data
          - ./logs:/var/log/kafka
        restart: unless-stopped
        # 在host模式下,不需要指定networks
  3. 将docker-compose.yaml拷贝到服务器上,运行启动命令

    bash 复制代码
    docker compose up -d
  4. 启动成功后,进行验证

    1. 创建 Topic

    bash 复制代码
    docker exec -it kafka kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

    2. 开启生产者(发送消息)

    运行下面命令后,输入一些文字并回车:

    bash 复制代码
    docker exec -it kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092

    3. 开启消费者(接收消息)

    打开另一个终端窗口执行,看是否能收到刚才输入的文字:

    bash 复制代码
    docker exec -it kafka kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092
  5. 如果失败可以使用如下命令查看错误日志,排查问题

    bash 复制代码
    docker logs kafka # 对应docker-compose.yaml文件中的container_name
相关推荐
亚空间仓鼠9 小时前
Docker容器化高可用架构部署方案(十三)
docker·容器·架构
米高梅狮子10 小时前
01.mysql的备份与恢复
运维·数据库·mysql·docker·容器·kubernetes·github
console.log('npc')10 小时前
Windows 11 → WSL2 → Ubuntu → Docker → Codex → Sub2API
windows·ubuntu·docker
终端行者12 小时前
jenkins Pipeline 企业级别的流水线构建 Docker 负责打包 最后上传到Nexus
ci/cd·docker·jenkins
酷道12 小时前
CentOS 7 安装 Docker
linux·docker·centos
最后一个bug12 小时前
ubuntu24.04在docker下迁移gitlab16
linux·运维·docker
木雷坞12 小时前
csdn-enterpriseGitLab Runner docker pull 慢:并行流水线镜像拉取排查
运维·docker·容器·gitlab
Achou.Wang12 小时前
Docker 多阶段构建:优化 Go 应用镜像大小的最佳实践
elasticsearch·docker·golang
酷道12 小时前
获取Docker阿里云专属镜像加速地址
阿里云·docker·容器·云计算