拉取镜像
docker pull zookeeper:3.7.0
创建zookeeper-compose.yml文件,格式要严格执行yml的格式
version: '3.7.0'
services:
zoo1:
# 镜像名称
image: zookeeper:3.7.0
# 重启docker 自动重启容器
restart: always
hostname: zoo1
#容器名
container_name: zookeeper_1
# 对外开放端口映射
ports:
- 2181:2181
# 挂载宿主机文件到容器内部
volumes:
- D:\dockerData\zookeeper\zoo1\data:/data
- D:\dockerData\zookeeper\zoo1\datalog:/datalog
#环境变量
environment:
ZOO_MY_ID: 1
#zookeeper较新版本的配置多了;2181,我之前没有配置进入zk容器内部执行zkServer.sh statsu报
#“Client port not found in static config file. Looking in dynamic config file. grep: : No such
#file or directory”异常,较旧的zk版本是不用配置;2181的
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper:3.7.0
restart: always
hostname: zoo2
container_name: zookeeper_2
ports:
- 2182:2181
volumes:
- D:\dockerData\zookeeper\zoo2\data:/data
- D:\dockerData\zookeeper\zoo2\datalog:/datalog
environment:
ZOO_MY_ID: 2
# 2181:对cline端提供服务 3888:选举leader使用 2888:集群内机器通讯使用(Leader监听此端口)
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper:3.7.0
restart: always
hostname: zoo3
container_name: zookeeper_3
ports:
- 2183:2181
volumes:
- D:\dockerData\zookeeper\zoo3\data:/data
- D:\dockerData\zookeeper\zoo3\datalog:/datalog
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
进入zookeeper-compose.yml所在目录启动
// -f指定配置文件 -d 后台启动
docker-compose -f zookeeper-compose.yml up -d
查看当前项目容器运行情况
查看节点状态
#进入容器内部
docker exec -it -uroot 容器id /bin/bash
当前节点不是leader
docker-compose相关几个命令
#列出指定项目中的所有容器
docker-compose -f zookeeper-compose.yml ps
#停止指定项目正在运行的容器,可通过docker-compose -f zookeeper-compose.yml start重启
docker-compose -f zookeeper-compose.yml stop
#删除指定项目的所有容器
docker-compose -f zookeeper-compose.yml down