Zookeeper Docker
Docker启动单节点
准备工作
bash
# 拉取镜像
docker pull zookeeper
# 查看当前镜像
docker images
# 查看容器启动情况
docker ps -a
# 创建data目录,用于挂载容器中的数据目录:
mkdir data
启动zookeeper
bash
# 部署命令
docker run -d \
-e TZ="Asia/Shanghai" \
-p 2181:2181 \
-v $PWD/data:/data \
--name zookeeper \
--restart always \
zookeeper
命令详细说明
bash
-e TZ="Asia/Shanghai" # 指定上海时区
-d # 表示在一直在后台运行容器
-p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
--name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;
--restart always #始终重新启动zookeeper
使用zk命令行客户端连接zk
bash
docker run -it --rm --link zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
其它命令
bash
# 查看zookeeper容器实例进程信息
docker top zookeeper
# 停止zookeeper实例进程
docker stop zookeeper
# 启动zookeeper实例进程
docker start zookeeper
# 重启zookeeper实例进程
docker restart zookeeper
# 查看zookeeper进程日志
docker logs -f zookeeper
# 杀死zookeeper实例进程
docker kill -s KILL zookeeper
# 移除zookeeper实例
docker rm -f -v zookeeper
Docker启动集群
集群方式选择使用docker-compose来完成。
配置文件 docker-compose.yml
yaml
version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
container_name: zoo2
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
container_name: zoo3
ports:
- "2183:2181"
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
此配置文件表示,Docker需要启动三个zookeeper实例,并将2181,2182,2183三个端口号映射到容器内的2181这个端口上。
- ZOO_MY_ID:表示zk服务的ID, 取值为1-255之间的整数,且必须唯一
- ZOO_SERVERS:表示zk集群的主机列表
启动zookeeper集群
bash
docker-compose up -d
查看zookeeper集群实例
bash
docker ps
# 或者
docker-compose ps
其他命令
bash
# 停止docker-compose服务
docker-compose stop
# 启动docker-compose服务
docker-compose start
# 重启docker-compose服务
docker-compose restart
查看zookeeper集群节点主从关系
bash
$ docker exec -it zoo1 /bin/bash
bash-4.4# ./bin/zkServer.sh status
问题
1、查看状态出现如下提示
Client port not found in the server configs
Client port not found. Looking for secureClientPort in the static config.
Unable to find either secure or unsecure client port in any configs. Terminating
解决办法
(1)3.5.*的配置(用分号拼接客户端端口号)
server.1=1.15.227.199:2888:3888;2181
(2)3.4.*及以前的配置
server.1=1.15.227.199:2888:3888:2181
参考