本文基于Zookeeper3.8.2进行说明
拉取镜像
docker pull zookeeper:3.8.2
查看已拉取到本地的镜像
docker image ls
启动容器
启动前准备
查看Zookeeper官方镜像说明(https://hub.docker.com/_/zookeeper)可以知道,官方镜像的默认配置文件在容器内的/conf/zoo.cfg路径下:
进入容器查看默认配置文件内容:
由于官方默认配置已满足要求,因此笔者不再对配置文件进行挂载,仅对数据保存目录进行挂载。(有需要用自己配置的读者,可以自行挂载配置,或容器启动后进入容器进行修改)
创建数据存储目录
宿主机创建数据存储目录(可以是其他位置,/Users/leo笔者Mac上的用户目录,等价于~目录,读者自行调整目录)
mkdir /Users/leo/docker/zookeeper
mkdir /Users/leo/docker/zookeeper/data
mkdir /Users/leo/docker/zookeeper/datalog
运行容器
docker run -p 2181:2181 --name zookeeper \
-v /Users/leo/docker/zookeeper/data:/data \
-v /Users/leo/docker/zookeeper/datalog:/datalog \
-d zookeeper:3.8.2
参数说明:
- docker run:运行Docker镜像
- -p:映射端口号,宿主机端口映射到容器内部端口
- --name zookeeper:设置容器名称为zookeeper
- -v /Users/leo/docker/zookeeper/data:/data:将容器的/data目录挂载到宿主机的/Users/leo/docker/redis/data目录(数据持久化)
- -v /Users/leo/docker/zookeeper/datalog:/datalog:同上
- -d zookeeper:3.8.2:选择运行的Docker镜像并指定Tag(不指定的话默认是latest)
测试
进入容器
docker exec -ti zookeeper bash
运行zk客户端脚本zkCli.sh,执行ls / 命令能看到[zookeeper]即可,执行结果如下图所示
./bin/zkCli.sh
ls /