單節點安裝
1、 環境說明
- docker: 18.09.9-ce
- zookeeper: 3.5.6
2、 拉取 zookeeper 鏡像
- 拉取鏡像
docker pull zookeeper
默認是摘取最新版本 zookeeper:latest。git
- 查看當前鏡像
3、 準備工做
將它部署在 /usr/local/zookeeper 目錄下:github
cd /usr/local && mkdir zookeeper && cd zookeeper
建立data目錄,用於掛載容器中的數據目錄:docker
mkdir data
4、 正式部署
- 部署命令:
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/data:/data --name zookeeper --restart always zookeeper
- 命令詳細說明:
-e TZ="Asia/Shanghai" # 指定上海時區 -d # 表示在一直在後臺運行容器 -p 2181:2181 # 對端口進行映射,將本地2181端口映射到容器內部的2181端口 --name # 設置建立的容器名稱 -v # 將本地目錄(文件)掛載到容器指定目錄;
--restart always #始終從新啓動zookeeper
- 查看容器啓動狀況:
docker ps -a
注:狀態(STATUS)爲Up,說明容器已經啓動成功。bash
5、 測試
-
使用zk命令行客戶端鏈接zkcurl
docker run -it --rm --link zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
說明:-server zookeeper
是啓動zkCli.sh
的參數tcp
6、 其它命令
# 查看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
來完成。測試
1、安裝docker-compose
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
2、配置docker-compose
編寫配置文件,並將其命名爲:docker-compose.yml
(docker-compose
默認配置文件名)
配置文件內容:url
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集羣的主機列表spa
3、啓動zookeeper集羣
docker-compose up -d
該命令執行須要在docker-compose
配置文件的目錄下執行,結果以下:命令行
[root@izbp13xko46hud9vfr5s94z conf]# docker-compose up -d Starting zoo1 ... done Starting zoo2 ... done Starting zoo3 ... done [root@izbp13xko46hud9vfr5s94z conf]#
4、查看zookeeper集羣實例
- 經過
docker ps
查看
[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
- 經過
docker-compose ps
查看
[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
配置文件下執行。
5、管理docker-compose服務
# 中止docker-compose服務
docker-compose stop
# 啓動docker-compose服務
docker-compose start
# 重啓docker-compose服務
docker-compose restart
6、查看zookeeper集羣節點主從關係
使用docker exec -it zoo1 /bin/bash
這個命令進入zoo1
節點中,以後輸入./bin/zkServer.sh statu
來查看節點主從關係
[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#