ZooKeeper是一个开源服务器,可实现高度可靠的分布式协调。
GitHub:https://github.com/31z4/zookeeper-docker
图书馆参考
此内容从官方Docker Library文档导入 ,由原始上传者提供。您可以在https://hub.docker.com/images/zookeeper上查看此图像的Docker Hub页面
Dockerfile
链接
3.4.13
,3.4
,latest
(3.4.13 / Dockerfile)3.5.4-beta
,3.5
(3.5.4-beta / Dockerfile)从哪里获得帮助:
Docker社区论坛,Docker社区Slack或Stack Overflow
提交问题的地方:https:
//github.com/31z4/zookeeper-docker/issues
维护者:
Docker社区
支持的体系结构:(详细信息)amd64
,arm32v6
,arm64v8
,i386
,ppc64le
,s390x
已发布的图像工件详细信息:
repo-info repo的repos/zookeeper/
目录(历史记录)
(图像元数据,传输大小等)
图片更新:
官方图片PR带有标签library/zookeeper
官方图片repo的library/zookeeper
文件(历史)
此描述的来源:
docs repo的zookeeper/
目录(历史)
支持的Docker版本:
最新版本(尽力降至1.6)
Apache ZooKeeper是Apache Software Foundation的一个软件项目,为大型分布式系统提供开源分布式配置服务,同步服务和命名注册表。ZooKeeper是Hadoop的一个子项目,但现在它本身就是一个顶级项目。
wikipedia.org/wiki/Apache_ZooKeeper
docker run --name some-zookeeper --restart always -d zookeeper
此图像包括EXPOSE 2181 2888 3888
(zookeeper客户端端口,跟随端口,选择端口),因此标准容器链接将使其自动可用于链接的容器。由于Zookeeper“快速失败”,最好始终重启它。
docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper
$ docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
...通过docker stack deploy
或docker-compose
实施例stack.yml
为zookeeper
:
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
这将以复制模式启动Zookeeper 。运行docker stack deploy -c stack.yml zookeeper
(或docker-compose -f stack.yml up
)并等待它完全初始化。端口2181-2183
将被暴露。
请注意,在一台计算机上设置多台服务器不会产生任何冗余。如果发生导致机器死机的事情,所有zookeeper服务器都将脱机。完全冗余要求每台服务器都有自己的机器。它必须是完全独立的物理服务器。同一物理主机上的多个虚拟机仍然容易受到该主机的完全故障的影响。
在复制模式下运行Zookeeper时,请考虑使用Docker Swarm。
Zookeeper配置位于/conf
。更改它的一种方法是将配置文件作为卷安装:
$ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper
如果zoo.cfg
未提供文件,则使用ZooKeeper推荐的默认值。可以使用以下环境变量覆盖它们。
$ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d 31z4/zookeeper
ZOO_TICK_TIME
默认为2000
。动物园管理员的tickTime
单个tick的长度,即ZooKeeper使用的基本时间单位,以毫秒为单位。它用于调节心跳和超时。例如,最小会话超时将是两个滴答
ZOO_INIT_LIMIT
默认为5
。动物园管理员的initLimit
以滴答为单位的时间量(请参阅tickTime),以允许关注者连接并同步到领导者。如果ZooKeeper管理的数据量很大,则根据需要增加此值。
ZOO_SYNC_LIMIT
默认为2
。动物园管理员的syncLimit
以滴答为单位的时间量(请参阅tickTime),以允许关注者与ZooKeeper同步。如果粉丝落后于领导者,他们就会被淘汰。
ZOO_MAX_CLIENT_CNXNS
默认为60
。动物园管理员的maxClientCnxns
限制由IP地址标识的单个客户端可以对ZooKeeper集合的单个成员进行的并发连接数(在套接字级别)。
ZOO_STANDALONE_ENABLED
默认为false
。动物园管理员的standaloneEnabled
在3.5.0之前,可以在独立模式或分布式模式下运行ZooKeeper。这些是单独的实现堆栈,并且无法在运行时在它们之间进行切换。默认情况下(为了向后兼容),standaloneEnabled设置为true。使用此默认设置的结果是,如果以单个服务器启动,则不允许集合增长,并且如果从多个服务器启动,则不允许缩小以包含少于两个参与者。
ZOO_AUTOPURGE_PURGEINTERVAL
默认为0
。动物园管理员的autoPurge.purgeInterval
3.4.0中的新增功能:必须触发清除任务的时间间隔(以小时为单位)。设置为正整数(1和更高)以启用自动清除。默认为0。
ZOO_AUTOPURGE_SNAPRETAINCOUNT
默认为3
。动物园管理员的autoPurge.snapRetainCount
3.4.0中的新增功能:启用后,ZooKeeper自动清除功能分别在dataDir和dataLogDir中保留autopurge.snapRetainCount最新快照和相应的事务日志,并删除其余日志。默认为3.最小值为3。
如果要以复制模式运行Zookeeper,则必须使用下面的环境变量。
ZOO_MY_ID
id必须在整体中是唯一的,并且应该具有介于1和255之间的值。请注意,如果使用/data
已包含该myid
文件的目录启动容器,则此变量不会产生任何影响。
ZOO_SERVERS
此变量允许您指定Zookeeper集合的计算机列表。每个条目都有server.id=host:port:port
。参赛作品以空格分隔。请注意,如果使用/conf
已包含该zoo.cfg
文件的目录启动容器,则此变量不会产生任何影响。
在3.5中,这种语法已经改变。应指定服务器:server.id=
Zookeeper动态重新配置
该图像被配置有以量/data
和/datalog
以分别保持动物园管理员内存数据库的快照和更新数据库的事务日志。
放置事务日志的位置要小心。专用的事务日志设备是始终如一的良好性能的关键。将日志置于繁忙的设备上会对性能产生负面影响。
默认情况下,ZooKeeper将stdout / stderr输出重定向到控制台。您可以/logs
通过传递环境变量重定向到位于的文件ZOO_LOG4J_PROP
,如下所示:
$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper
这将写入日志/logs/zookeeper.log
。检查ZooKeeper日志记录以获取更多详细信息。
/logs
为方便起见,此图像配置为音量。
查看此映像中包含的软件的许可证信息。
与所有Docker映像一样,这些映像也可能包含其他许可证(例如来自基本分发版的Bash等,以及所包含的主要软件的任何直接或间接依赖关系)。
这是能够自动检测一些额外的许可信息可能中找到的repo-info
版本库的zookeeper/
目录。
对于任何预先构建的图像使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。
转载来源:https://docs.docker.com/samples/library/zookeeper/