传陆编程 前言
干货,不啰嗦,直奔主题!
1、拉取Zookeeper镜像
docker pull wurstmeister/zookeeper
注解:pull,从docker仓库拉取一个镜像。
后面的参数格式:镜像名称:版本。:版本,为可选参数。不写的话,就是拉取默认版本latest。
2、拉取Kafka镜像
docker pull wurstmeister/kafka
查看已下载的镜像
docker images -a
注解:images,镜像列表。
-a 或 --all,为可选参数。显示所有镜像,不加该参数,默认是隐藏过程镜像的。
部署单点Zookeeper和单点Kafka,为后面的集群搭建做基础
1、创建Zookeeper单点容器
创建Zookeeper容器 注解:run,创建新容器,并为容器配置一些参数。
-t,在容器内部创建一个tty或者伪终端。-i,允许主机终端按照容器内部的标准与其交互。-d,后台运行容器并打印容器名称。--name,容器名称。-p,端口映射,参数格式为:主机物理端口:容器内部端口。最后跟上的就是我们已经下载的镜像。2、创建Kafka单点容器
注解:
-e,配置容器环境变量。--link,链接到另一个容器,参数格式为:目标容器名称:在本容器内的别名。这里的环境变量设置,其实是就是对即将创建的Kafka配置文件server.properties进行初始化。
查看容器
docker ps -a
注解:ps,容器列表。
-a 或 --all,为可选参数。显示所有容器,不加该参数,默认仅显示运行中的容器。3、测试
进入Kafka容器
进入Kafka容器 注释:exec,在运行中的容器中,执行命令。
跟上容器名称,也就是我们自己用 --name参数定义的名称。如果没有定义,也可以用ID。再跟上要执行的命令。消息生产和消息消费测试
测试成功
部署Zookeeper集群和Kafka集群
注意:这里没有使用 docker-compose,全部是手动搭建的方式。这样可以帮助我们熟悉使用docker,并了解Zookeeper和Kafka集群配置。
我们准备搭建3个Zookeeper节点和3个Kafka节点,集群不再适合使用link的方式进行容器间的通信。我们使用自定义网络,然后把容器加入自定义网络中。
1、创建自定义网络
查看网络
docker network ls
注释:network,管理网络。
ls,网络列表创建网络
创建自定义网络 再次查看网络
网络创建成功 2、创建Zookeeper集群
1、创建Zookeeper节点1
创建Zookeeper节点1 注释
-v,将宿守主机文件挂载到容器内部,参数格式:主机文件或目录:容器内文件或目录。当然了,既然是把主机文件挂载到容器内部,首先要先创建好主机的这些文件或目录,比如最重要的 zoo.cfg 文件,还有myid文件。myid服务器节点编号。
zoo.cfg中的集群核心配置如下:
#server.服务器节点编号=主机名:心跳端口:选举端口)
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
三个节点上述配置一致。只是myid文件内容记录分别是1,2,3。
2、创建Zookeeper节点2
创建Zookeeper节点2 3、创建Zookeeper节点3
创建Zookeeper节点2 4、分别进入Zookeeper节点,查看zkServer运行状态
跟随者 跟随者 领导者 领导者已经选举成功,Zookeeper集群完成
3、创建Kafka集群
参数配置的含义,都已经有过解释了,直接看三个节点配置吧
4、测试
这次测试,小编使用宿守主机上的kafka进行测试。链接Kafka容器,用的是主机与容器的端口映射。
测试成功 结束
本文涵盖的知识点:
Docker常用命令的介绍Docker常用配置参数的说明Docker实现主机与容器通信,端口映射Docker容器间通信,使用了link方式和network方式Docker自定义网络Docker容器挂载文件,-vDocker容器环境变量设置,-eZookeeper单点部署和集群部署Kafka单点部署和集群部署Kafka命令方式生产消息和消费消息您的关注与点赞,就是对小编最大的鼓励和支持。小编会继续努力,为大家带来干货知识。