假设一台单机主机的ip分别为:

  • 单机主机:192.168.0.200

1. 查找zookeeper镜像:

docker search zookeeper

2. 下载官方zookeeper镜像:

docker pull docker.io/zookeeper:3.4.13

3. 下载完后可检查镜像:

docker images

4. 在单机主机上建立挂载目录和zookeeper配置文件:

mkdir -p /usr/local/zookeeper/conf
mkdir -p /usr/local/zookeeper/data
cd /usr/local/zookeeper/conf
touch zoo.cfg
vi zoo.cfg

单机主机上的zoo.cfg配置信息如下:

clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60

5. 单机主机启动容器:

docker run --privileged=true --network host -v /usr/local/zookeeper/data:/data -v /usr/local/zookeeper/conf:/conf --name zookeeper2181 -d docker.io/zookeeper:3.4.13

命令说明:

  • --network host: 使用主机上的网络配置,如果不用这种模式,而用默认的bridge模式,会导致容器跨主机间通信失败
  • -v /usr/local/zookeeper/data:/data:主机的数据目录挂载到容器/data下
  • -v /usr/local/zookeeper/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置

都启动完成后,单机主机的2181端口开放出来了(注意,这种配置通过127.0.0.1:2181不能访问zookeeper,只能访问192.168.0.200:2181)

6. 检查容器的启动情况:

docker exec -it zookeeper2181 /bin/bash

进入容器内部后,其工作目录为:/zookeeper-3.4.13(版本依据镜像而定),执行zookeeper检查:

[root@hserver2 data]# docker exec -it zookeeper2181 /bin/bash
bash-4.4# pwd
/zookeeper-3.4.13
bash-4.4# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader
bash-4.4#

可以看到这个容器目前为leader状态,至此集群已启动完成。

7. 若启动失败了,通过如下命令观察zookeeper的启动日志:

docker logs zookeeper2181

内容示例如下:

[root@hserver2 data]# docker logs zookeeper2181
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.server.quorum.QuorumPeerConfig).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

最新文章

  1. 可变参数列表与printf()函数的实现
  2. 【JBOSS】 JBOSS目录结构
  3. storm中DAU实时计算方案
  4. QuickFix/J 源代码
  5. 优化PHP程序的方法(温故知新)
  6. NYOJ题目817英文藏头诗
  7. 与众不同 windows phone (42) - 8.0 相机和照片: 通过 PhotoCaptureDevice 捕获照片
  8. fanghuangscannerV3 字典生成器
  9. cocos2d-x Action
  10. 《sed的流艺术之一》-linux命令五分钟系列之二十一
  11. CodeForces - 796C Bank Hacking
  12. 【Android应用开发】Android Studio - MAC 版 - 快捷键详解
  13. POJ 2411 解题报告
  14. Hbase篇--Hbase和MapReduce结合Api
  15. vue笔记-生命周期
  16. 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊
  17. Nat Med:单独使用anti-CTLA4治疗前列腺癌效果差的原因
  18. 雷林鹏分享:XML to HTML
  19. 解决在IDEA 的Maven下 出现 Cannot access in offline mode 问题
  20. 【转】Currying 的局限性

热门文章

  1. VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置
  2. Nginx 源码完全注释(10)ngx_radix_tree
  3. Activiti 乱码问题
  4. spring4-3-AOP-AspectJ注解-01-简单使用
  5. Insufficient free space for journal files
  6. LWIP协议栈1
  7. bootstrap缩略图及警示框制作
  8. .NET分布式事务处理(转)
  9. WCF和ASP.NET Web API在应用上的选择(转)
  10. [GO]简单的并发服务器