在Docker中安装kafka遇到问题记录

命令含义解答:

在docker安装kafka的时候,启动kafka的时候会执行下面语句:

bash 复制代码
docker run -d  --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.11.129:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.11.129:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

那么

docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.11.129:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.11.129:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

这个命令什么意思?

这个命令是用于在Docker中启动一个Kafka容器的命令。让我来解释一下这个命令的每个部分的含义:

  • docker run -d: 这是Docker命令的一部分,用于在后台运行容器。

  • --log-driver json-file --log-opt max-size=100m --log-opt max-file=2: 这些是日志驱动相关的选项,用于配置容器的日志。

  • --name kafka: 这是为容器指定一个名称,本例中是"kafka"。

  • -p 9092:9092: 这是用于将容器内部的9092端口映射到主机的9092端口,以便可以通过主机访问Kafka。

  • -e KAFKA_BROKER_ID=0: 这是设置Kafka Broker ID的环境变量,本例中设置为0。

  • -e KAFKA_ZOOKEEPER_CONNECT=192.168.11.129:2181/kafka: 这是指定Zookeeper的连接地址和端口的环境变量,本例中连接到192.168.11.129的2181端口。

  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.11.129:9092: 这是设置广告侦听器的环境变量,Kafka将广告侦听器公布给Zookeeper。

  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 这是设置侦听器的环境变量,这里设置Kafka监听所有接口的9092端口。

  • -v /etc/localtime:/etc/localtime: 这是将主机的时区文件挂载到容器中,以确保容器的时区与主机一致。

  • wurstmeister/kafka: 这是要运行的Kafka镜像的名称。

通过运行这个命令,您将在Docker中启动一个具有配置和映射的Kafka容器,其中包括Broker ID、Zookeeper连接、广告侦听器等设置。这样,您就可以在主机上使用Kafka来进行消息传递和其他操作。

**疑问:**上文中的-e KAFKA_ZOOKEEPER_CONNECT=192.168.11.129:2181/kafka。其中的192.168.11.129是zookeeper服务的ip地址吗?

答:

是的,192.168.11.129是Zookeeper服务的IP地址。在这个命令中,通过设置KAFKA_ZOOKEEPER_CONNECT环境变量为192.168.11.129:2181/kafka,指定了Kafka连接到的Zookeeper服务的地址和端口。在这里,192.168.11.129是Zookeeper服务器的IP地址,2181是Zookeeper的默认端口号。在/kafka后面的/kafka路径是指定Kafka在Zookeeper中的命名空间。

docker与宿主机直接ping的问题

环境:docker中使用ifconfig查看ip是172.17.0.2,宿主机的ip是192.168.8.190.

docker desktop中启动zookeeper后,使用ifconfig,查看ip是172.17.0.2.在Windows的宿主机上ping 172.17.0.2,ping不通。但是在docker中的zk可以ping 通宿主机的ip。

如果在Windows的宿主机上无法ping通172.17.0.2,但在Docker中的zk能够ping通宿主机的IP,这可能是由于Windows主机上的网络配置导致的。

Docker Desktop使用虚拟网络和网络地址转换(NAT)来连接容器和宿主机。默认情况下,Docker会将容器连接到一个虚拟网络,并在宿主机上创建一个虚拟网卡来与这个网络进行通信。因此,172.17.0.2是在Docker的虚拟网络上分配给zk容器的IP地址,仅在Docker虚拟网络中可用。

要使Windows宿主机能够访问到容器内的IP地址,可以尝试使用Docker的端口映射功能,将容器的端口映射到宿主机上的一个端口。例如,可以使用以下命令来运行zk容器并映射端口:

bash 复制代码
docker run -d -p 2181:2181 --name my-zk zookeeper:tag

这将把zk容器的2181端口映射到宿主机上的2181端口。然后,在Windows主机上,可以使用它自己的IP地址和映射的端口访问zk。

那如果在docker中启动了kafka镜像。启动命令:docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.17.0.2:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

使用172.17.0.2还是使用Windows宿主机的ip?

在这种情况下,应该使用宿主机的IP地址,而不是172.17.0.2。原因是Kafka的KAFKA_ADVERTISED_LISTENERS参数会告知客户端应该连接到哪个IP地址来访问Kafka服务器。

根据你提供的命令行参数,Kafka的广告侦听器配置为PLAINTEXT://172.17.0.2:9092,这意味着Kafka会告知客户端通过连接到172.17.0.2的9092端口来访问Kafka。然而,这只适用于Docker内部的网络。

如果你想从Windows宿主机访问Kafka,请将KAFKA_ADVERTISED_LISTENERS参数的值更改为宿主机的IP地址。即修改为PLAINTEXT://宿主机ip地址:9092,例如:

bash 复制代码
docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://宿主机ip地址:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

请将宿主机ip地址替换为你的Windows宿主机的实际IP地址。这样,Kafka就会告知客户端通过连接到宿主机的IP地址的9092端口来访问Kafka,从而使Windows宿主机能够访问到Kafka服务。

本文来源👉: 凯哥个人博客 点击查看更多哦~

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)4 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang4 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特4 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe4 天前
docker常见命令
docker
正经教主4 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde
Nano叶落4 天前
Kafka 消费积压排查入门:Docker 搭环境亲手制造一次 ‘消息堵死‘,10 分钟看懂 Lag
kafka