获取镜像

  1. # 查看可用的稳定版本
  2. sudo docker search zookeeper
  3. sudo docker pull zookeeper:3.4.10
  4. sudo docker image ls |grep zookeeper

服务编排

  1. mkdir -p /share/zookeeper && cd /share/zookeeper
  2. rm -rf /share/zookeeper/docker-compose.yml
  3. vi /share/zookeeper/docker-compose.yml

服务编排内容如下:

  1. version: "2"
  2. networks:
  3. zkCluster:
  4. services:
  5. zoo1:
  6. build: ./zookeeper
  7. restart: always
  8. hostname: zoo1
  9. container_name: zoo1
  10. networks:
  11. - zkCluster
  12. ports:
  13. - 2181:2181
  14. volumes:
  15. - ./zookeeper/zoo1/data:/data
  16. - ./zookeeper/zoo1/datalog:/datalog
  17. environment:
  18. ZOO_MY_ID: 1
  19. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
  20. zoo2:
  21. build: ./zookeeper
  22. restart: always
  23. hostname: zoo2
  24. container_name: zoo2
  25. networks:
  26. - zkCluster
  27. ports:
  28. - 2182:2181
  29. volumes:
  30. - ./zookeeper/zoo2/data:/data
  31. - ./zookeeper/zoo2/datalog:/datalog
  32. environment:
  33. ZOO_MY_ID: 2
  34. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
  35. zoo3:
  36. build: ./zookeeper
  37. restart: always
  38. hostname: zoo3
  39. container_name: zoo3
  40. networks:
  41. - zkCluster
  42. ports:
  43. - 2183:2181
  44. volumes:
  45. - ./zookeeper/zoo3/data:/data
  46. - ./zookeeper/zoo3/datalog:/datalog
  47. environment:
  48. ZOO_MY_ID: 3
  49. ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

服务配置

Φ 配置文件概览

以下配置相关文件保持与编排文件相同目录。

  1. d zookeeper # 初始化配置
  2. d zoo1 # zoo1配置
  3. d data # 数据缓存目录
  4. d datalog # 日志目录
  5. d zoo2 # zoo2配置
  6. d data # 数据缓存目录
  7. d datalog # 日志目录
  8. d zoo3 # zoo3配置
  9. d data # 数据缓存目录
  10. d datalog # 日志目录
  11. - Dockerfile

Φ Dockerfile

  1. FROM zookeeper:3.4.10

服务构建

  1. cd /share/zookeeper
  2. sudo docker-compose -f docker-compose.yml build --no-cache # 不带缓存构建(只创建镜像,不会启动容器)
  3. sudo docker-compose -f docker-compose.yml up -d # 构建后运行
  4. sudo docker-compose -f docker-compose.yml up --build # 跟踪方式构建,可用于调试

验证

  1. cd /share/zookeeper
  2. # 查看进程
  3. sudo docker-compose -f docker-compose.yml ps
  4. # 查看zk状态(zoo1为容器名称)
  5. sudo docker exec -t zoo1 zkServer.sh status
  6. # zk节点操作验证(CRUD)
  7. sudo docker exec -it zoo1 zkCli.sh -server localhost:2181
  8. zkcli>> ls / # 查看zk根目录
  9. zkcli>> create /zk mydata # 创建zk节点
  10. zkcli>> get /zk # 查看zk节点数据
  11. zkcli>> set /zk "newData" # 更新zk节点数据
  12. zkcli>> delete /zk # 删除zk节点
  13. zkcli>> quit # 退出zkcli
  14. # 查看日志
  15. sudo docker logs zoo1
  16. sudo docker logs -f -t --tail=50 zoo1
  17. # 查看网络
  18. sudo docker network ls
  19. sudo docker inspect zoo1
  20. # 停止
  21. sudo docker-compose -f docker-compose.yml stop
  22. # 移除
  23. sudo docker-compose -f docker-compose.yml down

宿主机或者其他局域网的机器,可以通过宿主机IP及暴露的端口访问zk集群(举例:192.168.0.101:2181,192.168.0.101:2182,192.168.0.101:2183)。

附件

docker-compose.zookeeper.zip