这里我的环境为centos7,ubuntu请在命令头加上sudo
# 创建一个docker网络,之后的zookeeper集群就放在这个网络上
docker create network zoonet
# 创建3个zookeeper的容器,这里我没有映射端口
# -p 宿主机端口:容器内端口 ,具体查看docker run --help
# zoonode1
docker run -d -it --name zoonode1 \
> -v /conf/:/conf/ -e "ZOO_MY_ID=1" --net zoonet zookeeper:3.5.7
# zoonode2
docker run -d -it --name zoonode2 \
> -v /conf/:/conf/ -e "ZOO_MY_ID=2" --net zoonet zookeeper:3.5.7
# zoonode3
docker run -d -it --name zoonode3 \
> -v /conf/:/conf/ -e "ZOO_MY_ID=3" --net zoonet zookeeper:3.5.7
# zookeeper容器中的配置文件在/conf/zoo.cfg中,
# -v 宿主机目录:容器内目录 映射到宿主机的/conf/zoo.cfg中,方便修改
# -e "ZOO_MY_ID=3"就是环境变量,设置myid的值,即节点几
# --net zoonet 就是将这个容器放在zoonet这个网络中
# 可以docker inspect zoonet 查看你所创建的网络,以及在此网络中的容器
创建好容器后,修改宿主机映射的zoo.cfg文件
cd /conf/zoo.cfg
vim zoo.cfg
修改文件末尾为:
注意:server.后面跟的数字要和运行容器时-e中的环境变量的ZOO_MY_ID的值保持一致,同时和zoonode保持一致。
修改完配置文件后最好重启一下容器
docker stop zoonode1 zoonode2 zoonode3
docker start zoonode1 zoonode2 zoonode3
docker ps 可查看容器状态
进入zoonode1容器查看:
docker exec -it zoonode1 /bin/bash
可见,Mode:follwer的字样代表集群启动成功,同理,可查看zoonode2和zoonode3的状态.
zoonode2:
发现zoonode2的Mode:leader,可见zoonode2为领导者。
zoonode3:
到此zookeeper集群搭建完毕。然后就是启动客户端测试,这是zookeeper的课程内容了。下次实现docker-compose搭建集群。