docker kafka 安装和配置

scala版本2.13

kafka版本2.6.0

docker pull wurstmeister/kafka:2.13-2.6.0

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: "3.8"

services:
kafka:
container_name: ts_kafka
image: wurstmeister/kafka:2.13-2.6.0
ports:
- "9092:9092"
volumes:
- "KAFKA_ADVERTISED_HOST_NAME=172.54.102.25"
# 在 kafka 集群中,每个 kafka 都有一个 BROKER_ID 来区分自己
- "KAFKA_BROKER_ID=0"
# 配置 kafka 的监听端口
- "KAFKA_LISTENERS=PLAINTEXT://9092"
# 把 kafka 的地址端口注册给 zookeeper
- "KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://9092"
# 配置 zookeeper
- "KAFKA_ZOOKEEPER_CONNECT=zookeeper01:2181,zookeeper02:2181/kafka"
# 关闭 Topic 自动创建
- "KAFKA_AUTO_CREATE_TOPICS_ENABLE=false"
- "./logs:/tmp/kafka-logs"
- "/var/run/docker.sock:/var/run/docker.sock"
# 容器时间同步虚拟机的时间
- "/etc/localtime:/etc/localtime"
restart: always

/var/run/docker.sock挂载了之后,在容器内就可以执行”docker ps”、”docker port”这些命令了,这是docker官方提供的能力。假设kafka容器的9092映射到宿主机的30001端口,那么kafka注册到ZK的时候,要注册的IP应该是宿主机的IP,端口应该是30001,这样才能保证外部可访问,所以kafka容器启动时会执行一个名为start-kafka.sh的脚本,里面用docker port命令来获取宿主机的端口,因此必须要挂载/var/run/docker.sock才能执行docker port命令

  • 本文作者: forever杨
  • 本文链接: https://blog.yl-online.top/posts/212ff189.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。如果文章内容对你有用,请记录到你的笔记中。本博客站点随时会停止服务,请不要收藏、转载!