单节点安装
一、 环境说明
- docker: 18.09.9-ce
- zookeeper: 3.5.6
二、 拉取 zookeeper 镜像
默认是摘取最新版本 zookeeper:latest。
![img](https://img2018.cnblogs.com/i-beta/1577453/202002/1577453-20200218110311103-1391656531.png)
三、 准备工作
将它部署在 /usr/local/zookeeper 目录下:
1
| cd /usr/local && mkdir zookeeper && cd zookeeper
|
创建data目录,用于挂载容器中的数据目录:
![img](https://img2018.cnblogs.com/i-beta/1577453/202002/1577453-20200218110633631-1450938810.png)
四、 正式部署
1
| docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/data:/data --name zookeeper --restart always zookeeper
|
1 2 3 4 5 6
| -e TZ="Asia/Shanghai" # 指定上海时区 -d # 表示在一直在后台运行容器 -p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口 --name # 设置创建的容器名称 -v # 将本地目录(文件)挂载到容器指定目录; --restart always #始终重新启动zookeeper
|
![img](https://img2018.cnblogs.com/i-beta/1577453/202002/1577453-20200218111223382-266770946.png)
注:状态(STATUS)为Up,说明容器已经启动成功。
五、 测试
1
| docker run -it --rm --link zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
|
说明:-server zookeeper
是启动zkCli.sh
的参数
![img](https://img2018.cnblogs.com/i-beta/1577453/202002/1577453-20200218111608512-516451599.png)
![img](https://img2018.cnblogs.com/i-beta/1577453/202002/1577453-20200218111735060-225718424.png)
六、 其它命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # 查看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-compose
来完成。
一、安装docker-compose
1 2
| curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
|
二、配置docker-compose
编写配置文件,并将其命名为:docker-compose.yml
(docker-compose
默认配置文件名)
配置文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| 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 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2: image: zookeeper restart: always container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3: image: zookeeper restart: always container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
|
此配置文件表示,Docker需要启动三个zookeeper实例,并将2181,2182,2183三个端口号映射到容器内的2181这个端口上。
ZOO_MY_ID
:表示zk服务的ID, 取值为1-255之间的整数,且必须唯一
ZOO_SERVERS
:表示zk集群的主机列表
三、启动zookeeper集群
该命令执行需要在docker-compose
配置文件的目录下执行,结果如下:
1 2 3 4 5
| [root@izbp13xko46hud9vfr5s94z conf]# docker-compose up -d Starting zoo1 ... done Starting zoo2 ... done Starting zoo3 ... done [root@izbp13xko46hud9vfr5s94z conf]#
|
四、查看zookeeper集群实例
[root@izbp13xko46hud9vfr5s94z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e53b4c838001 zookeeper “/docker-entrypoint.…” 4 minutes ago Up 44 seconds 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zoo1
19282fb6f9b4 zookeeper “/docker-entrypoint.…” 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2182->2181/tcp zoo2
099b926fa2d3 zookeeper “/docker-entrypoint.…” 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2183->2181/tcp zoo3
1 2 3 4 5 6 7
| [root@izbp13xko46hud9vfr5s94z conf]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------ zoo1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp zoo2 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2182->2181/tcp, 2888/tcp, 3888/tcp zoo3 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2183->2181/tcp, 2888/tcp, 3888/tcp [root@izbp13xko46hud9vfr5s94z conf]#
|
注:这个命令需要在docker-compose
配置文件下执行。
五、管理docker-compose服务
1 2 3 4 5 6 7
| # 停止docker-compose服务 docker-compose stop
# 启动docker-compose服务 docker-compose start # 重启docker-compose服务 docker-compose restart
|
六、查看zookeeper集群节点主从关系
使用docker exec -it zoo1 /bin/bash
这个命令进入zoo1
节点中,之后输入./bin/zkServer.sh statu
来查看节点主从关系
1 2 3 4 5 6
| [root@izbp13xko46hud9vfr5s94z conf]# docker exec -it zoo1 /bin/bash bash-4.4# ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower bash-4.4#
|