arm32v6/zookeeper注意:这是zookeeper官方镜像的arm32v6构建的“每架构”仓库——更多信息,请参见官方镜像文档中的“除amd64之外的架构?”官方镜像文档和官方镜像FAQ中的“Git中的镜像源已更改,现在该怎么办?”官方镜像FAQ。
维护者:
Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
Dockerfile链接警告:此镜像在arm32v6架构上不受支持
提交issue的位置:
[***]
支持的架构:(更多信息)
amd64、arm64v8、ppc64le、s390x
已发布镜像制品详情:
repo-info仓库的repos/zookeeper/目录(历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/zookeeper标签
official-images仓库的library/zookeeper文件(历史记录)
本描述的来源:
docs仓库的zookeeper/目录(历史记录)
Apache ZooKeeper是Apache软件基金会的一个软件项目,提供开源的分布式配置服务、同步服务和命名注册,用于大型分布式系统。ZooKeeper曾是Hadoop的子项目,现在已成为独立的顶级项目。
***.org/wiki/Apache_ZooKeeper
!logo
console$ docker run --name some-zookeeper --restart always -d arm32v6/zookeeper
此镜像包含EXPOSE 2181 2888 3888 8080(分别为Zookeeper客户端端口、 follower端口、选举端口、AdminServer端口),因此标准容器链接会自动使其对链接的容器可用。由于Zookeeper“快速失败”特性,建议始终重启容器。
console$ docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper
console$ docker run -it --rm --link some-zookeeper:zookeeper arm32v6/zookeeper zkCli.sh -server zookeeper
docker composezookeeper的compose.yaml示例:
yamlservices: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo2: image: zookeeper restart: always hostname: zoo2 ports: - 2182:2181 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo3: image: zookeeper restart: always hostname: zoo3 ports: - 2183:2181 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
这将以复制模式启动Zookeeper。运行docker compose up并等待其完全初始化。端口2181-2183将被暴露。
请注意,在单台机器上设置多个服务器不会创建任何冗余。如果机器发生故障,所有Zookeeper服务器都将离线。完全冗余要求每个服务器有自己的机器,且必须是完全独立的物理服务器。同一物理主机上的多个虚拟机仍容易受到该主机完全故障的影响。
在复制模式下运行Zookeeper时,考虑使用Docker Swarm。
Zookeeper配置位于/conf目录。更改配置的一种方法是将配置文件挂载为卷:
console$ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg arm32v6/zookeeper
如果未提供zoo.cfg文件,将使用ZooKeeper推荐的默认值。可通过以下环境变量覆盖这些默认值:
console$ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d arm32v6/zookeeper
ZOO_TICK_TIME默认值为2000。ZooKeeper的tickTime
单个tick的长度,以毫秒为单位,是ZooKeeper使用的基本时间单位,用于调节心跳和超时。例如,最小会话超时将为两个tick。
ZOO_INIT_LIMIT默认值为5。ZooKeeper的initLimit
允许follower连接并同步到leader的时间(以tick为单位,见tickTime)。如果ZooKeeper管理的数据量较大,需增加此值。
ZOO_SYNC_LIMIT默认值为2。ZooKeeper的syncLimit
允许follower与ZooKeeper同步的时间(以tick为单位,见tickTime)。如果follower落后leader太多,将被丢弃。
ZOO_MAX_CLIENT_CNXNS默认值为60。ZooKeeper的maxClientCnxns
限制单个客户端(按IP地址识别)对ZooKeeper集群中单个成员的并发连接数(在套接字级别)。
ZOO_STANDALONE_ENABLED默认值为true。Zookeeper的standaloneEnabled
在3.5.0之前,ZooKeeper可运行在独立模式或分布式模式。这是两个独立的实现栈,运行时无法切换。默认情况下(为了向后兼容),standaloneEnabled设置为true。使用此默认值的结果是:如果以单个服务器启动,集群将不允许扩展;如果以多个服务器启动,将不允许缩减到少于两个参与者。
ZOO_ADMINSERVER_ENABLED默认值为true。Zookeeper的admin.enableServer
AdminServer是一个嵌入式Jetty服务器,提供HTTP接口来执行四字命令。默认情况下,服务器在端口8080上启动,可通过访问URL“/commands/[命令名称]”执行命令,例如http://localhost:8080/commands/stat。
ZOO_AUTOPURGE_PURGEINTERVAL默认值为0。Zookeeper的autoPurge.purgeInterval
触发清理任务的时间间隔(小时)。设置为正整数(1及以上)以启用自动清理。默认值为0。
ZOO_AUTOPURGE_SNAPRETAINCOUNT默认值为3。Zookeeper的autoPurge.snapRetainCount
启用后,ZooKeeper自动清理功能将在dataDir和dataLogDir中分别保留autopurge.snapRetainCount个最新快照和相应的事务日志,并删除其余内容。默认值为3,最小值为3。
ZOO_4LW_COMMANDS_WHITELIST默认值为srvr。Zookeeper的4lw.commands.whitelist
用户希望使用的四字命令列表,以逗号分隔。必须将有效的四字命令放入此列表,否则ZooKeeper服务器将不启用该命令。默认情况下,白名单仅包含zkServer.sh使用的“srvr”命令,其余四字命令默认禁用。
ZOO_CFG_EXTRA并非所有Zookeeper配置设置都通过上述环境变量公开。这些变量仅用于覆盖基本配置关键字和一些经常更改的选项。如果挂载自定义配置文件不适合您,可考虑使用ZOO_CFG_EXTRA环境变量。通过此变量可向Zookeeper配置文件添加任意配置参数。以下示例显示如何在端口7070上启用Prometheus指标导出器:
console$ docker run --name some-zookeeper --restart always -e ZOO_CFG_EXTRA="metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7070" arm32v6/zookeeper
JVMFLAGS许多Zookeeper高级配置选项可通过Java系统属性(形式为-Dproperty=value)设置。例如,可使用Netty而非NIO(默认选项)作为服务器通信框架:
console$ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory" arm32v6/zookeeper
有关支持的Java系统属性完整列表,请参见高级配置。
JVMFLAGS的另一个示例用例是设置JVM最大堆大小为1 GB:
console$ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Xmx1024m" arm32v6/zookeeper
如果要以复制模式运行Zookeeper,以下环境变量是必需的。
ZOO_MY_IDid在集群中必须唯一,值应在1到255之间。请注意,如果启动容器时/data目录已包含myid文件,此变量将无效。
ZOO_SERVERS此变量允许指定Zookeeper集群的机器列表。每个条目应指定为:server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port> Zookeeper动态重配置。条目之间用空格分隔。请注意,如果启动容器时/conf目录已包含zoo.cfg文件,此变量将无效。
此镜像配置了/data和/datalog卷,分别用于存储Zookeeper内存数据库快照和数据库更新事务日志。
注意事务日志的存储位置。专用的事务日志设备是保证良好性能的关键。将日志放在繁忙设备上会对性能产生不利影响。
默认情况下,ZooKeeper将stdout/stderr输出重定向到控制台。从3.8版本开始,ZooKeeper使用LOGBack作为日志后端。ZooKeeper默认的logback.xml文件位于/conf目录。要覆盖默认日志配置,可将自定义配置挂载为卷:
console$ docker run --name some-zookeeper --restart always -d -v $(pwd)/logback.xml:/conf/logback.xml arm32v6/zookeeper
有关更多详情,请参见ZooKeeper日志记录。
可通过传递环境变量ZOO_LOG4J_PROP将日志重定向到/logs目录中的文件:
console$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" arm32v6/zookeeper
这会将日志写入/logs/zookeeper.log。此镜像为方便起见配置了/logs卷。
查看此镜像中包含的软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证约束(例如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖项)。
一些能够自动检测到的额外许可证信息可能位于repo-info仓库的zookeeper/目录中。
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务