1. 程式人生 > 其它 >Docker部署Kafka

Docker部署Kafka

pull 拉取映象

wurstmeister/zookeeper Overview

docker pull wurstmeister/zookeeper

wurstmeister/kafka Overview

docker pull wurstmeister/kafka

部署單Broker

定義 docker-compose-single-broker.yml:

version: '3.8'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - D:\var\run\docker.sock:/var/run/docker.sock

kafka 環境變數:

  • KAFKA_ADVERTISED_HOST_NAME:你可以修改主機名來以匹配docker主機IP。注意:如果要執行多個Broker,請不要使用localhost或127.0.0.1作為主機ip
  • KAFKA_CREATE_TOPICS:kafka-docker在建立期間自動在kafka中建立主題,例如 test:1:1 表示主題test包含1個分割槽和1個副本。
  • KAFKA_ZOOKEEPER_CONNECT:現在是強制的環境變數,表示kafka的zookeeper connect string。

volumes 卷對映:

  • 宿主機中的檔案路徑:容器中的檔案路徑,而我的宿主機是Windows主機。

參考自 Github kafka-docker

GitHub 上的檔案 build: . 修改為 image: wurstmeister/kafka,修改前會出現以下錯誤:

failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount698554617/Dockerfile: no such file or directory
ERROR: Service 'kafka' failed to build : Build failed

啟動與停止

啟動命令:

docker-compose -f docker-compose-single-broker.yml up -d

結尾不加 -d 會佔用當前命令列視窗。因為按 Ctrl + C 會自動 stop 容器。

停止命令:

docker-compose -f docker-compose-single-broker.yml stop

參考文件