Docker支持多种网络模式,包括bridge(桥接模式)、host(主机模式)、overlay(覆盖网络模式)等。
- Bridge(桥接模式):这是Docker默认的网络模式。在桥接模式下,每个Docker容器都运行在自己的虚拟网络接口上,并且这些接口通过一个桥接器连接在一起。Docker服务端启动时会自动创建一个桥接器,然后所有的容器都会连接到这个桥接器上。这种模式下,容器可以互相通信,但是容器不能与宿主机进行通信。
- Host(主机模式):在这种模式下,容器将直接使用宿主机的网络接口。因此,容器可以像宿主机一样直接访问外部网络。但是,这种模式下容器之间无法通信。
- Overlay(覆盖网络模式):这种模式主要用于多个Docker集群之间的容器通信。它使用一个覆盖网络将多个Docker集群连接在一起,使得集群中的容器可以相互通信。
app-tier:网络名称
–driver:网络类型为bridge?docker network create: 这是Docker命令用于创建新网络的命令。
app-tier: 这是新创建的网络的名称。
--driver bridge: 这是指定网络驱动程序的参数
docker network create app-tier --driver bridge
Kafka依赖zookeeper所以先安装zookeeper
-p:设置映射端口(默认2181)
-d:后台启动
# zookeeper docker安装启动命令
docker run -d --name zookeeper-server --network app-tier -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest
安装并运行Kafka,
–name:? ?容器名称
-p:? ? ? ? ? 设置映射端口(默认9092 )
-d:? ? ? ? ??后台启动
ALLOW_PLAINTEXT_LISTENER? ? ? ? ? ? ? ? ? 任何人可以访问
KAFKA_CFG_ZOOKEEPER_CONNECT? ? ? 链接的zookeeper
ALLOW_PLAINTEXT_LISTENER? ? ? ? ? ? ? ? ? 任何人可以访问
KAFKA_CFG_ADVERTISED_LISTENERS? ? 当前主机IP或地址(重点:如果是服务器部署则配服务器IP或域名否则客户端监听消息会报地址错误)
# kafuk 安装启动命令 将ip修改为自己本地ip
docker run -d --name kafka-server --network app-tier -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.14.93:9092 bitnami/kafka:latest
docker run --name kafka-manager -d --network app-tier -p 9000:9000 -e ZK_HOSTS="zookeeper-server:2181" sheepkiller/kafka-manager
docker run -d --name kafka-map --network app-tier -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --restart always dushixiang/kafka-map:latest
下载 Kerberos:
- 访问?MIT Kerberos Distribution Page?并下载 Kerberos for Windows 的64位MSI安装文件。
安装 Kerberos:
- 运行下载的 MSI 文件来安装 Kerberos。
设置 PATH:
- 安装完成后,确保 'bin' 文件夹(C:\Program Files\MIT\Kerberos\bin)在你的 PATH 环境变量中。
- 打开“控制面板” -> “系统” -> “高级系统设置” -> “环境变量”。
- 在“系统变量”部分,查找名为“PATH”的变量,并确保它包含 Kerberos 的 'bin' 文件夹的路径。如果没有,请点击“新建”并添加该路径。
重启:
- 为了确保所有的环境变量都已更新,建议重新启动你的计算机。
pip install??kafka-python
?创建生产者文件代码 kafka_pronucer.py
from kafka import KafkaProducer
import json
# kafka 队列生产者
def producer_demo():
# 配置Kafka生产者
producer = KafkaProducer(bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.dumps(v).encode())
# 发送消息到指定的topic
producer.send('my-topic', {'key': '5'})
# 关闭生产者连接
producer.close()
if __name__ == '__main__':
producer_demo()
?创建消费者文件代码 kafka_consumer.py
from kafka import KafkaConsumer
# kafka 队列消费者
def consumer_demo():
# 配置Kafka消费者
consumer = KafkaConsumer('my-topic',
bootstrap_servers='localhost:9092',
auto_offset_reset='earliest')
# 消费消息
for message in consumer:
print(message.value.decode('utf-8'))
if __name__ == '__main__':
consumer_demo()
生产者推送数据,消费端打印数据内容,后期可以根据需求进行进阶操作与更改