准备 yaml 文件

docker-kafka.yaml

version: "3.3"
services:
  zookeeper:
    image: 'bitnami/zookeeper:3.4.12-r68'
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:2.0.0'
    hostname: kafkabroker
    container_name: kafkabroker
    ports:
      - '9092:9092'
    environment:
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
networks:
  default:
执行 docker-compose 命令

拉取 docker 镜像,创建并启动容器

$ sudo docker-compose -f docker-kafka.yaml up -d
Creating network "kafka_default" with the default driver
Pulling kafka (bitnami/kafka:2.0.0)...
2.0.0: Pulling from bitnami/kafka
476234a6f713: Pulling fs layer
2c88f470210d: Pulling fs layer
9a62d319ca4b: Pulling fs layer
e4dbc20a00f4: Pulling fs layer
476234a6f713: Pull complete
2c88f470210d: Pull complete
9a62d319ca4b: Pull complete
e4dbc20a00f4: Pull complete
dfd6244186fc: Pull complete
4955ef348e8d: Pull complete
887a9c07fc46: Pull complete
540664008e81: Pull complete
b44742fac87e: Pull complete
8e031f4a42ed: Pull complete
a1f69359766c: Pull complete
Digest: sha256:e7b90e93be338381d57991073ea5a493ba20834afa39114d64db5a601fd53827
Status: Downloaded newer image for bitnami/kafka:2.0.0
Creating kafkabroker ... done

$ sudo docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED         STATUS         PORTS                                                           NAMES
d48c1fe8d97b   bitnami/kafka:2.0.0            "/app-entrypoint.sh …"   2 minutes ago   Up 2 minutes   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                       kafkabroker
9399eba0a867   bitnami/zookeeper:3.4.12-r68   "/app-entrypoint.sh …"   2 minutes ago   Up 2 minutes   2888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 3888/tcp   zookeeper


Kafka 操作

本文使用的 kafkacat 工具,可参考:《Kafka 命令行工具 kcat/kafkacat》

1. 查看元数据

$ kafkacat  -b localhost:9092 -L -J | jq
{
  "originating_broker": {
    "id": -1,
    "name": "localhost:9092/bootstrap"
  },
  "query": {
    "topic": "*"
  },
  "controllerid": 1001,
  "brokers": [
    {
      "id": 1001,
      "name": "kafkabroker:9092"
    }
  ],
  "topics": []
}

2. 生产数据

$ echo "hello world" | kafkacat -C -b kafkabroker -t syslog

3. 消费数据

$ kafkacat -C -b kafkabroker -t syslog
hello world

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐