1、docker拉取zookeeper镜像
docker search zookeeper # 搜索镜像
docker pull zookeeper:3.4.9 # 拉取指定版本zk镜像
docker images # 查看image ID
mkdir -p /root/docker/zookeeper/data #用于映射目录
docker run -d -p 2181:2181 -v /root/docker/zookeeper/data:/data/ --name zookeeper --privileged 3b83d9104a4c # 启动zookeeper实例,最后的3b83d9104a4c为image ID,中间是做了目录映射,将容器内的数据目录挂载到宿主机目录,防止数据丢失
2、进入容器
这个主要是为了在本机连接zookeeper服务,如果zookeeper服务在虚拟机,想要在本地windows连接则无需该步骤。
docker ps # 查看zookeeper的CONTAINER ID
docker exec -it CONTAINERID /bin/bash # 后台进入容器
3、连接zookeeper服务
3.1 虚拟机连接
cd bin # 进入bin目录
./zkCli.sh
3.2 本机连接
解释:主要是大多时候我们都将zookeeper服务等放在虚拟机上,而在本地进行操作,因此这里我称为本机连接。
对于此种连接方式需要有几点注意的,首先是在虚拟机上,我们需要直到虚拟机的ip地址,并且虚拟机要和本地os平台在同一局域网之下(本机ping通虚拟机,虚拟机ping通本机),可利用下面命令查看虚拟机ip地址:
ifconfig
其次,我们需要关闭虚拟机的防火墙:
systemctl status firewalld #查看防火墙是否开启
systemctl start firewalld #开启防火墙
systemctl stop firewalld #关闭防火墙
然后进行端口开放:
firewall-cmd --list-ports #查看所有开启的端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent #开放2181端口
firewall-cmd --reload #重启防火墙,使其生效
然后就可以使用虚拟机ip地址+端口号形式在本地os平台连接zk服务了,这里选择使用idea自带的zk插件连接测试:
先在idea上安装zookeeper插件,这里我的已经安装好了。
然后在配置好连接zookeeper的ip地址和端口号:
然后就能在idea左上角能看到zookeeper了:
4、znode节点常用命令
znode是zookeeper的数据节点,znode之间是类似于目录树的结构关系,对zookeeper的操作一般都是对znode的操作,而对znode节点操作就是一般的crud操作:
# znode节点操作部分
create [-s] [-e] path data acl # 创建一个znode节点,同时设置节点权限acl,-s表示创建有序节点,-e创建临时节点,如创建一个/mynode节点:create /mynode hello,另外znode需要按照层级去创建,如创建/node1/node2,需要县创建/node1再创建/node1/node2
stat path [watch] # 查看znode状态,如数据长度,时间戳等等,同时可以注册一个监听器
get path [watch] # 获取znode节点的数据,同时可以注册一个监听器,如:get /mynode
set path data [version] # 设置znode的数据,同时可以设置一个监听器,如:set /mynode "hello world"
ls path [watch] #列出znode的子节点,同时可以设置一个监听器,如:ls /
ls2 path [watch] #列出znode的子节点,同时可以设置一个监听器,如:ls2 /,与ls的区别是ls2还可以获取到子节点个数等等状态信息
delete path [version] #删除znode节点,注意路径为绝对路径,且不可删除拥有子节点的znode
rmr path #递归删除znode节点,与delete的区别是可以删除拥有子节点的znode
当我们忘记时,可以利用help命令进行查看: