最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署kafka的詳細教程

 更新時間:2025年05月28日 08:11:32   作者:檀越@新空間  
在現(xiàn)代分布式系統(tǒng)架構中,Apache Kafka 已成為實時數(shù)據(jù)流處理的事實標準,這篇文章為大家詳細介紹了如何在Docker中部署kafka,感興趣的小伙伴可以了解下

在現(xiàn)代分布式系統(tǒng)架構中,Apache Kafka 已成為實時數(shù)據(jù)流處理的事實標準。而 Confluent 平臺作為 Kafka 的企業(yè)級發(fā)行版,提供了更多增強功能和工具。

一、問題背景

為什么無法拉取 zookeeper:7.4.0 鏡像?

許多開發(fā)者在嘗試使用 Docker 部署 Confluent 平臺時,經(jīng)常會遇到一個典型錯誤:無法找到zookeeper:7.4.0鏡像。這是因為他們混淆了兩個不同的鏡像源:

1.Apache 官方 Zookeeper 鏡像:由 Apache 軟件基金會維護,鏡像名稱為zookeeper,標簽通常采用 Zookeeper 自身的版本號(如 3.8.0)

2.Confluent 平臺 Zookeeper 鏡像:由 Confluent 公司維護,作為其商業(yè)產(chǎn)品的一部分,鏡像名稱為confluentinc/cp-zookeeper,標簽采用 Confluent 平臺版本號(如 7.4.0)

關鍵區(qū)別在于 Confluent 的 Zookeeper 鏡像經(jīng)過了特定的優(yōu)化和配置,能夠與 Confluent 平臺的其他組件(如 Kafka、Schema Registry 等)無縫協(xié)作。直接使用 Apache 官方的 Zookeeper 鏡像雖然可以工作,但需要進行額外的配置才能與 Confluent Kafka 配合使用。

二、正確的鏡像拉取方法

2.1 拉取 Confluent 官方鏡像

對于大多數(shù)使用 Confluent 平臺的場景,推薦使用以下命令拉取鏡像:

docker pull --platform linux/amd64 confluentinc/cp-zookeeper:7.4.0
docker pull --platform linux/amd64 confluentinc/cp-kafka:7.4.0

這里有幾個重要細節(jié)需要注意:

  • 鏡像名稱前綴:必須使用confluentinc/cp-作為前綴,cp代表"Confluent Platform"
  • 版本一致性:確保 Zookeeper 和 Kafka 使用相同的版本號(如都使用 7.4.0),以避免兼容性問題
  • 平臺指定:--platform linux/amd64參數(shù)確保拉取的是 x86 架構的鏡像,這在 ARM 設備(如 M1/M2 Mac)上尤為重要

2.2 驗證鏡像可用性

在拉取鏡像前,可以先驗證鏡像是否存在:

docker manifest inspect confluentinc/cp-zookeeper:7.4.0

如果命令返回了詳細的鏡像信息,說明該鏡像存在且可訪問。如果返回錯誤,可能的原因包括:

  • 版本號輸入錯誤(Confluent 采用語義化版本控制,如 7.4.0)
  • 網(wǎng)絡問題導致無法訪問 Docker Hub
  • 該版本可能已被棄用(可查看 Confluent 官方文檔確認)

三、完整的 docker-compose 配置

下面是一個經(jīng)過驗證的docker-compose.yml文件示例,展示了如何正確配置 Confluent 平臺的 Zookeeper 和 Kafka 服務:

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
      # 生產(chǎn)環(huán)境建議增加以下配置
      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
      # 內(nèi)存配置(根據(jù)實際情況調(diào)整)
      KAFKA_HEAP_OPTS: "-Xmx1G -Xms1G"

3.1 關鍵配置解析

1.網(wǎng)絡配置:

KAFKA_ADVERTISED_LISTENERS:定義了 Kafka 對外暴露的訪問地址

  • PLAINTEXT://localhost:9092:供宿主機訪問
  • PLAINTEXT_INTERNAL://kafka:29092:供 Docker 網(wǎng)絡內(nèi)其他容器訪問

這種雙監(jiān)聽器配置確保了無論從容器外部還是內(nèi)部都能正確連接

2.Zookeeper 配置:

  • ZOOKEEPER_CLIENT_PORT:客戶端連接端口
  • ZOOKEEPER_TICK_TIME:Zookeeper 使用的基本時間單位(毫秒)
  • 對于生產(chǎn)環(huán)境,建議配置集群模式而非單機模式

3.Kafka 配置:

  • KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:設置__consumer_offsets 主題的副本數(shù),單節(jié)點設為 1
  • KAFKA_TRANSACTION_STATE_LOG_*:事務相關配置,對于開發(fā)環(huán)境可以簡化

3.2 平臺兼容性考慮

在 Apple Silicon(M1/M2)等 ARM 架構設備上運行時,必須明確指定平臺為linux/amd64,因為:

  • 大多數(shù) Confluent 官方鏡像僅構建了 x86 版本
  • 雖然 Docker 可以在 ARM 設備上模擬 x86 環(huán)境,但性能會有所下降
  • 明確指定平臺可以避免自動選擇不兼容的鏡像變體

四、常見問題解決方案

4.1 鏡像拉取失敗

問題現(xiàn)象:

Error response from daemon: manifest for confluentinc/cp-zookeeper:7.4.0 not found

解決方案:

檢查版本號是否正確(訪問Docker Hub確認)

嘗試不使用特定版本,改用最新穩(wěn)定版:

docker pull confluentinc/cp-zookeeper:latest

檢查網(wǎng)絡連接,特別是企業(yè)環(huán)境可能需要配置代理

4.2 容器啟動后立即退出

可能原因:

  • 平臺架構不匹配
  • 內(nèi)存不足(Zookeeper 和 Kafka 默認需要較多內(nèi)存)
  • 端口沖突(特別是 2181 和 9092)

解決方案:

確保 docker-compose 中指定了正確的平臺:

platform: linux/amd64

增加內(nèi)存限制:

environment:
  KAFKA_HEAP_OPTS: "-Xmx1G -Xms1G"

檢查并關閉占用端口的其他服務

4.3 性能優(yōu)化建議

對于開發(fā)測試環(huán)境:

  • 可以適當降低內(nèi)存配置
  • 關閉不必要的日志和監(jiān)控功能

對于生產(chǎn)環(huán)境:

  • 必須使用集群模式而非單機模式
  • 配置持久化存儲卷
  • 設置合理的資源限制和監(jiān)控

五、替代方案:使用 Apache 官方鏡像

如果不需要 Confluent 平臺的額外功能,也可以選擇使用 Apache 官方鏡像:

services:
  zookeeper:
    image: zookeeper:3.8
    ports:
      - "2181:2181"

  kafka:
    image: bitnami/kafka:3.4
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      ALLOW_PLAINTEXT_LISTENER: "yes"

注意事項:

版本號完全不同(Apache Kafka 和 Zookeeper 有自己的版本體系)

配置方式有差異,需要參考各自文檔

缺少 Confluent 提供的一些企業(yè)級功能

到此這篇關于Docker部署kafka的詳細教程的文章就介紹到這了,更多相關Docker部署kafka內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 修改Docker鏡像倉庫為阿里云鏡像或163鏡像的實現(xiàn)

    修改Docker鏡像倉庫為阿里云鏡像或163鏡像的實現(xiàn)

    docker本身的倉庫非常慢,但是國內(nèi)有阿里云的鏡像倉庫非???本文主要介紹了修改Docker鏡像倉庫為阿里云鏡像或163鏡像的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • docker如何查看已安裝的Redis版本

    docker如何查看已安裝的Redis版本

    這篇文章主要介紹了docker如何查看已安裝的Redis版本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 編寫最佳的Dockerfile的方法

    編寫最佳的Dockerfile的方法

    本文給大家分享的是如何編寫最佳的dockerfile的方法,通過具體實例幫助大家快速掌握編寫Dockerfile的技巧
    2017-06-06
  • 詳解將本地docker容器遷移到服務端

    詳解將本地docker容器遷移到服務端

    這篇文章主要介紹了詳解將本地docker容器遷移到服務端,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • docker search 報錯但 pull 正常的問題解析

    docker search 報錯但 pull 正常的問題解析

    用戶在Windows 11 WSL2 Ubuntu 20.04中使用docker search報錯,但docker pull正常,建議通過docker pull直接獲取鏡像,如搜索mysql時指向特定地址,本文給大家介紹docker search 報錯但 pull 正常的問題解析,感興趣的朋友一起看看吧
    2025-07-07
  • Docker下安裝Mongo4.2及客戶端工具連接Mongo

    Docker下安裝Mongo4.2及客戶端工具連接Mongo

    這篇文章主要介紹了Docker下安裝Mongo4.2和客戶端工具連接Mongo數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • docker安裝RabbitMq添加用戶實現(xiàn)方式

    docker安裝RabbitMq添加用戶實現(xiàn)方式

    這篇文章主要介紹了docker安裝RabbitMq添加用戶實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • docker 命令報異常permission denied的解決方案

    docker 命令報異常permission denied的解決方案

    這篇文章主要介紹了docker 命令報異常permission denied的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker run起來之后執(zhí)行多條命令

    docker run起來之后執(zhí)行多條命令

    docker run :創(chuàng)建一個新的容器并運行一個命令。這篇文章主要介紹了docker run起來之后執(zhí)行多條命令 ,需要的朋友可以參考下
    2017-11-11
  • Docker容器間通訊直接路由方式實現(xiàn)網(wǎng)絡通訊

    Docker容器間通訊直接路由方式實現(xiàn)網(wǎng)絡通訊

    今天小編就為大家分享一篇關于Docker容器間通訊直接路由方式實現(xiàn)網(wǎng)絡通訊,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評論

祥云县| 迁安市| 乐昌市| 鄂温| 周至县| 临颍县| 错那县| 禄劝| 会泽县| 伊川县| 九龙县| 普安县| 城市| 岳西县| 沾益县| 岗巴县| 望城县| 中方县| 巫山县| 宁南县| 玉溪市| 桂平市| 柳州市| 海阳市| 靖江市| 长治县| 西城区| 西安市| 桓台县| 天津市| 新乡县| 泊头市| 鄯善县| 商城县| 德州市| 积石山| 鹤山市| 防城港市| 奉节县| 桦甸市| 安国市|