欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker部署kafka的詳細(xì)教程

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

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

一、問(wèn)題背景

為什么無(wú)法拉取 zookeeper:7.4.0 鏡像?

許多開(kāi)發(fā)者在嘗試使用 Docker 部署 Confluent 平臺(tái)時(shí),經(jīng)常會(huì)遇到一個(gè)典型錯(cuò)誤:無(wú)法找到zookeeper:7.4.0鏡像。這是因?yàn)樗麄兓煜藘蓚€(gè)不同的鏡像源:

1.Apache 官方 Zookeeper 鏡像:由 Apache 軟件基金會(huì)維護(hù),鏡像名稱(chēng)為zookeeper,標(biāo)簽通常采用 Zookeeper 自身的版本號(hào)(如 3.8.0)

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

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

二、正確的鏡像拉取方法

2.1 拉取 Confluent 官方鏡像

對(duì)于大多數(shù)使用 Confluent 平臺(tái)的場(chǎng)景,推薦使用以下命令拉取鏡像:

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

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

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

2.2 驗(yàn)證鏡像可用性

在拉取鏡像前,可以先驗(yàn)證鏡像是否存在:

docker manifest inspect confluentinc/cp-zookeeper:7.4.0

如果命令返回了詳細(xì)的鏡像信息,說(shuō)明該鏡像存在且可訪(fǎng)問(wèn)。如果返回錯(cuò)誤,可能的原因包括:

  • 版本號(hào)輸入錯(cuò)誤(Confluent 采用語(yǔ)義化版本控制,如 7.4.0)
  • 網(wǎng)絡(luò)問(wèn)題導(dǎo)致無(wú)法訪(fǎng)問(wèn) Docker Hub
  • 該版本可能已被棄用(可查看 Confluent 官方文檔確認(rèn))

三、完整的 docker-compose 配置

下面是一個(gè)經(jīng)過(guò)驗(yàn)證的docker-compose.yml文件示例,展示了如何正確配置 Confluent 平臺(tái)的 Zookeeper 和 Kafka 服務(wù):

version: "3"

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.4.0
    platform: linux/amd64 # 明確指定平臺(tái)
    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ù)實(shí)際情況調(diào)整)
      KAFKA_HEAP_OPTS: "-Xmx1G -Xms1G"

3.1 關(guān)鍵配置解析

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

KAFKA_ADVERTISED_LISTENERS:定義了 Kafka 對(duì)外暴露的訪(fǎng)問(wèn)地址

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

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

2.Zookeeper 配置:

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

3.Kafka 配置:

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

3.2 平臺(tái)兼容性考慮

在 Apple Silicon(M1/M2)等 ARM 架構(gòu)設(shè)備上運(yùn)行時(shí),必須明確指定平臺(tái)為linux/amd64,因?yàn)椋?/p>

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

四、常見(jiàn)問(wèn)題解決方案

4.1 鏡像拉取失敗

問(wèn)題現(xiàn)象:

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

解決方案:

檢查版本號(hào)是否正確(訪(fǎng)問(wèn)Docker Hub確認(rèn))

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

docker pull confluentinc/cp-zookeeper:latest

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

4.2 容器啟動(dòng)后立即退出

可能原因:

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

解決方案:

確保 docker-compose 中指定了正確的平臺(tái):

platform: linux/amd64

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

environment:
  KAFKA_HEAP_OPTS: "-Xmx1G -Xms1G"

檢查并關(guān)閉占用端口的其他服務(wù)

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

對(duì)于開(kāi)發(fā)測(cè)試環(huán)境:

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

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

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

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

如果不需要 Confluent 平臺(tái)的額外功能,也可以選擇使用 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"

注意事項(xiàng):

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

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

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

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

相關(guān)文章

  • docker-compose命令如何刪除image的鏡像

    docker-compose命令如何刪除image的鏡像

    這篇文章主要介紹了docker-compose命令如何實(shí)現(xiàn)刪除image的鏡像方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 修改Docker鏡像默認(rèn)存儲(chǔ)位置的方法(解決方法)

    修改Docker鏡像默認(rèn)存儲(chǔ)位置的方法(解決方法)

    這篇文章主要介紹了修改Docker鏡像默認(rèn)存儲(chǔ)位置的方法,如果上面運(yùn)行 Docker 服務(wù),經(jīng)過(guò)長(zhǎng)時(shí)間的使用,會(huì)使原本就比較大的分區(qū)越來(lái)越不夠用。如何更好地的處理這個(gè)問(wèn)題呢,本文給出解決方案,需要的朋友一起看看吧
    2021-04-04
  • docker刪除拉取的鏡像釋放內(nèi)存的操作方法

    docker刪除拉取的鏡像釋放內(nèi)存的操作方法

    kali內(nèi)存滿(mǎn)了,釋放一下內(nèi)存,通過(guò)查看本地鏡像,刪除本地鏡像,文中給大家介紹了docker image ls詳解,對(duì)docker刪除拉取的鏡像釋放內(nèi)存相關(guān)知識(shí)操作感興趣的朋友一起看看吧
    2023-01-01
  • 深入理解 Docker 數(shù)據(jù)卷(Data Volume)

    深入理解 Docker 數(shù)據(jù)卷(Data Volume)

    本文詳細(xì)介紹了Docker數(shù)據(jù)卷(DataVolume)的概念、作用、使用命令、掛載方式以及最佳實(shí)踐,數(shù)據(jù)卷是Docker中實(shí)現(xiàn)數(shù)據(jù)持久化和共享的關(guān)鍵機(jī)制之一,通過(guò)本文的學(xué)習(xí),讀者可以更好地掌握數(shù)據(jù)卷的使用方法,從而在容器化應(yīng)用中進(jìn)行有效的數(shù)據(jù)管理
    2024-11-11
  • Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐小結(jié)

    Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐小結(jié)

    這篇文章主要介紹了Node.js服務(wù)Docker容器化應(yīng)用實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker安裝drone的實(shí)現(xiàn)示例

    docker安裝drone的實(shí)現(xiàn)示例

    Drone是一款基于Docker的持續(xù)集成和持續(xù)部署平臺(tái),可以幫助開(kāi)發(fā)者自動(dòng)化構(gòu)建、測(cè)試和部署應(yīng)用程序,本文主要介紹了docker安裝drone的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-12-12
  • Docker使用Bind9實(shí)現(xiàn)域名解析的思路詳解

    Docker使用Bind9實(shí)現(xiàn)域名解析的思路詳解

    這篇文章主要介紹了DOCKER使用BIND9實(shí)現(xiàn)域名解析,主要包括刷新服務(wù)修改配置文件信息,實(shí)現(xiàn)思路也很簡(jiǎn)單,本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11
  • 詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境

    詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境

    本篇文章主要介紹了詳解如何用docker安裝laravel開(kāi)發(fā)環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 多云環(huán)境下的Docker部署策略實(shí)現(xiàn)

    多云環(huán)境下的Docker部署策略實(shí)現(xiàn)

    在多云環(huán)境下,Docker容器技術(shù)為應(yīng)用程序的部署提供了高度的靈活性和可擴(kuò)展性,本文就來(lái)介紹一下多云環(huán)境下的Docker部署策略實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • docker 運(yùn)行指定內(nèi)存的操作

    docker 運(yùn)行指定內(nèi)存的操作

    這篇文章主要介紹了docker 運(yùn)行指定內(nèi)存的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論