docker pull zookeeper
分别创建4个文件夹 第一个存放启动命令留着以后用. 剩下那3个看名字就知道是啥意思了
然后在conf文件夹里面放一个文件: zoo.cfg
内容是:
tickTime=2000 initLimit=100 syncLimit=5 dataDir=/data dataLogDir=/datalog clientPort=2181 quorumListenOnAllIPs=true preAllocSize=64M globalOutstandingLimit=100000 snapCount=50000 maxClientCnxns=64 minSessionTimeout=4000 maxSessionTimeout=40000 4lw.commands.whitelist=* admin.enableServer=true server.1=172.26.226.13:2888:3888 server.2=172.26.226.17:2888:3888 server.3=172.26.130.14:2888:3888 tcpKeepAlive=true ipReachableTimeout=0 cnxTimeout=3 electionAlg=3 autopurge.snapRetainCount=5 autopurge.purgeInterval=24 #忽略ACL验证 skipACL=yes forceSync=yes
然后打开防火墙 2181 2888 3888
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2181/tcp --permanent
重启防火墙让它生效
systemctl restart firewalld.service
查看已经开放的端口
firewall-cmd --list-ports
然后就开始执行命令 这个命令保存到cmd文件夹里下次接着用
docker run -itd -p 2181:2181 -p 2888:2888 -p 3888:3888 --restart always --name=zookeeper --hostname zookeeper-server --privileged=true -v /public/soft/zookeeper/conf/zoo.cfg:/conf/zoo.cfg -v /public/soft/zookeeper/data:/data -v /public/soft/zookeeper/datalog:/datalog -v /public/soft/zookeeper/logs:/logs -e "TZ=Asia/Shanghai" -e "ZOO_MY_ID=3" -e "JAVA_OPTS=-server -Xms512m -Xmx512m -Xmn256m -Duser.home=/opt -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+AlwaysPreTouch -XX:-UseBiasedLocking" zookeeper:latest
如果有3台服务器那就 一个1 一个2 一个3 不同的服务器不要写一样的 其他的都一样.
“ZOO_MY_ID=1”
“ZOO_MY_ID=2”
“ZOO_MY_ID=3”
-v的挂在本地要创建文件夹啊 不创建可能就报错了;
验证
docker exec -ti [你的zookeeper container id] zkServer.sh status
docker exec -it zookeeper zkServer.sh status
如果报上面的这个错 那就重启docker
systemctl restart docker 就可以解决了. 但是是啥原因暂时还不知道. 有知道的可以告诉我下 … 欢迎指导!!!



