本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
注意:这是zookeeper官方镜像的arm64v8架构专用仓库——更多信息,请参见官方镜像文档中的“非amd64架构?”和官方镜像FAQ中的“镜像源在Git中已更改,该怎么办?”。
维护者:
Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux或Stack Overflow
Dockerfile链接3.8.4, 3.8, 3.8.4-jre-17, 3.8-jre-17
3.9.4, 3.9, 3.9.4-jre-17, 3.9-jre-17, latest
问题反馈:
[***]
支持的架构:(更多信息)
amd64、arm64v8、ppc64le、s390x
镜像 artifact 详情:
repo-info 仓库的repos/zookeeper/目录(历史记录)
(镜像元数据、传输大小等)
镜像更新:
official-images 仓库的library/zookeeper标签
official-images 仓库的library/zookeeper文件(历史记录)
本描述的来源:
docs 仓库的zookeeper/目录(历史记录)
Apache ZooKeeper是Apache软件基金会的一个软件项目,提供开源的分布式配置服务、同步服务和命名注册,适用于大型分布式系统。ZooKeeper曾是Hadoop的子项目,现在是独立的顶级项目。
***.org/wiki/Apache_ZooKeeper
!logo
$ docker run --name some-zookeeper --restart always -d arm64v8/zookeeper
此镜像包含EXPOSE 2181 2888 3888 8080(分别对应Zookeeper客户端端口、跟随者端口、选举端口、AdminServer端口),因此标准容器链接会自动使其对链接的容器可用。由于Zookeeper采用“快速失败”机制,建议始终重启容器。
$ docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper
$ docker run -it --rm --link some-zookeeper:zookeeper arm64v8/zookeeper zkCli.sh -server zookeeper
docker composezookeeper的compose.yaml示例:
services: 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目录。修改配置的一种方式是将自定义配置文件挂载为卷:
$ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg arm64v8/zookeeper
如果未提供zoo.cfg文件,将使用Zookeeper推荐的默认配置。可通过以下环境变量覆盖默认值:
$ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d arm64v8/zookeeper
ZOO_TICK_TIME默认值为2000。Zookeeper的tickTime
单个tick的时长(以毫秒为单位),是Zookeeper使用的基本时间单位,用于调节心跳和超时。例如,最小会话超时为两个tick。
ZOO_INIT_LIMIT默认值为5。Zookeeper的initLimit
允许跟随者连接并同步到领导者的时间(以tick为单位,参见tickTime)。如果Zookeeper管理的数据量较大,需增加此值。
ZOO_SYNC_LIMIT默认值为2。Zookeeper的syncLimit
允许跟随者与Zookeeper同步的时间(以tick为单位,参见tickTime)。如果跟随者落后领导者过多,将被剔除。
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环境变量添加任意配置参数。以下示例展示如何在端口7070启用Prometheus指标导出器:
$ docker run --name some-zookeeper --restart always -e ZOO_CFG_EXTRA="metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7070" arm64v8/zookeeper
JVMFLAGS许多Zookeeper高级配置项可通过Java系统属性(格式为-Dproperty=value)在此设置。例如,使用Netty而非NIO(默认)作为服务器通信框架:
$ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory" arm64v8/zookeeper
参见高级配置获取支持的Java系统属性完整列表。
JVMFLAGS的另一个示例是设置JVM最大堆大小为1GB:
$ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Xmx1024m" arm64v8/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将标准输出/错误重定向到控制台。从3.8版本开始,Zookeeper使用LOGBack作为日志后端。默认logback.xml文件位于/conf目录。要覆盖默认日志配置,可将自定义配置文件挂载为卷:
$ docker run --name some-zookeeper --restart always -d -v $(pwd)/logback.xml:/conf/logback.xml arm64v8/zookeeper
更多详情参见ZooKeeper日志。
通过传递环境变量ZOO_LOG4J_PROP可将日志重定向到/logs目录下的文件:
$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" arm64v8/zookeeper
这会将日志写入/logs/zookeeper.log。此镜像配置了/logs卷以方便使用。
查看此镜像包含软件的许可证信息。
与所有Docker镜像一样,此镜像可能还包含其他软件(如基础发行版中的Bash等,以及主软件的直接或间接依赖),这些软件可能具有其他许可证。
部分可自动检测的额外许可证信息可在repo-info仓库的zookeeper/目录中找到。
对于任何预构建镜像的使用,镜像用户有责任确保其使用符合包含的所有软件的相关许可证要求。


免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429