前提准备
- 直接下载官方提供的
docker pull zookeeper
单机
- 启动镜像
docker run -d -p 2181:2181 --name some-zookeeper --restart always 3487af26dee9
- 进入容器
docker exec -it 容器id bash
- 操作zookeeper
./bin/zkCli.sh
(官方提供的这个镜像,启动容器,直接启动了zookeeper) - OK 完成
集群
- 创建自己的bridge网络
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
(报错的话,把IP地址172.18.0.0/16 和172.18.0.1 改为172.19.0.0/16 和 172.19.0.1 , 如果还不行,类似下去。错误原因主要是docker已有的容器占用了ip地址) - 查看下自己创建的网络
docker network ls
-
使用shell脚本创建3个容器
for i in $(seq 1 3)
do
docker run -d -p 218$i:2181 --name zookeeper_node$i --privileged --restart always --network zoonet --ip 172.19.0.$((i+1)) -v /user/docker/zookeeper/zookeeper-cluster/node$i/volumes/data:/data -v /user/docker/zookeeper/zookeeper-cluster/node$i/volumes/datalog:/datalog -v /user/docker/zookeeper/zookeeper-cluster/node$i/volumes/logs:/logs -v /user/docker/zookeeper/zookeeper-cluster/node$i/volumes/conf:/conf -e ZOO_MY_ID=$i -e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper
done
for i in $(seq 1 3)
do
docker exec -it zookeeper_node$i ./bin/zkServer.sh status
done
完成!