Docker容器安装单机Kafka

2019-03-07  本文已影响0人  咦呀哟

Docker容器刚开始使用,仅仅只了解一些简单命令和原理.很多东西也是从东拼西凑的.主要是记录下怎么走出坑的.

1.搜索镜像,包括kafka,zookeeper,还有kafka管理工具

docker search kafka

docker search zookeeper

docker search kafka-manager

2.拉取镜像(根据排名选择第一个,虽然不知道为啥,排在第一不是没有道理的)

docker pull wurstmeister/kafka

docker pull wurstmeister/zookeeper

docker pull sheepkiller/kafka-manager

3.启动容器

    3.1启动kafka

docker run --name kafka \

-p 9092:9092 \

-e KAFKA_ADVERTISED_HOST_NAME=kafka01 \

-e KAFKA_CREATE_TOPICS="test:1:1" \

-e KAFKA_ZOOKEEPER_CONNECT=服务器IP:zookeeper端口 \

-d  wurstmeister/kafka 

    3.2启动zookeeper 

docker run --name zookeeper \

--restart always \

-p 2181:2181 \

-d wurstmeister/zookeeper

    3.3启动kafka管理工具

docker run -itd \

--restart=always \

--name=kafka-manager \

-p 9000:9000 \

-e ZK_HOSTS="服务器IP:zookeeper端口" \

sheepkiller/kafka-manager

4.看到容器启动成功,是不是以为大功告成了,你还是太年轻了,测试下先

docker exec -it kafka容器ID /bin/bash

进入容器

    4.1 创建一个topic

/opt/kafka/bin/kafka-topics.sh --create --zookeeper 服务器IP:zookeeper端口 --replication-factor 1 --partitions 1 --topic my-test

    4.2 查看topic列表

/opt/kafka/bin/kafka-topics.sh --list --zookeeper 服务器IP:zookeeper端口

    4.3发送消息

/opt/kafka/bin/kafka-console-producer.sh --broker-list 服务器IP:kafka端口 --topic my-test

    4.4接收消息

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服务器IP:kafka端口 --topic my-test --from-beginning

这是发送消息的时候的错误信息(做了这么久软件设计师这点小错误算啥,屁巅屁蛋去百度...什么百度,现在学会升级了,google一下)

一顿操作之后,迷迷糊糊的似乎发现了什么.关键是service.properties的配置问题,然后各种尝试修改配置

listeners=PLAINTEXT://:9092解开注释改成 listeners=PLAINTEXT://localhost:9092

然后再尝试发送消息:

 ERROR Error when sending message to topic my-topic with key: null, value: 9 bytes with error: Batch Expired (org.apache.kafka.clients.

producer.internals.ErrorLoggingCallback)

错误变成了上面这种,继续google

把localhost换成ip

换成容器的hostname

尝试了一天无果,从入门到放弃这个梗告诉我们不要在一颗树上吊死

还有一棵树没试过 docker-compose

1.拉取镜像步骤同上

2.创建一个文件夹,并编写docker-compose.yml文件

version: '3'

services:

  zookeeper:

    image: wurstmeister/zookeeper

    ports:

      - "2181:2181"

  kafka:

    image: wurstmeister/kafka

    depends_on: [ zookeeper ]

    ports:

      - "9092:9092"

    environment:

      KAFKA_ADVERTISED_HOST_NAME: 你的服务器IP

      KAFKA_CREATE_TOPICS: "test:1:1"

      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

    volumes:

      - /var/run/docker.sock:/var/run/docker.sock

3.在该文件路径下执行打包命令

docker-compose build

4.在该文件路径下执行启动服务命令

docker-compose up -d

5.进入容器然后测试发送消息的步骤同上

上一篇下一篇

猜你喜欢

热点阅读