针对 ZooKeeper 应用的 Docker 镜像,用于提供 ZooKeeper 服务。
详细信息可参照:3.6.1官方说明

版本信息:
镜像信息
后续相关命令行默认使用
[Docker Hub](https://hub.docker.com)镜像服务器做说明
Docker 快速启动命令:
$ docker run -d -e ALLOW_ANONYMOUS_LOGIN=yes colovu/zookeeper:3.6
Docker-Compose 快速启动命令:
# 从 Gitee 下载 Compose 文件
$ curl -sSL -o https://gitee.com/colovu/docker-zookeeper/raw/master/docker-compose.yml
# 从 Github 下载 Compose 文件
$ curl -sSL -o https://raw.githubusercontent.com/colovu/docker-zookeeper/master/docker-compose.yml
# 创建并启动容器
$ docker-compose up -d
镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应zookeeper子目录中:
/var/log # 日志输出,应用日志输出,非数据日志输出;自动创建子目录zookeeper
/srv/conf # 配置文件;自动创建子目录zookeeper
/srv/data # 数据文件;自动创建子目录zookeeper
/srv/datalog # 数据操作日志文件;自动创建子目录zookeeper
如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用 Zookeeper 的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。
在初始化 ZooKeeper 容器时,如果配置文件zoo.cfg不存在,可以在命令行中设置相应环境变量对默认参数进行修改。类似命令如下:
$ docker run -d -e "ZOO_INIT_LIMIT=10" --name zookeeper colovu/zookeeper
常使用的环境变量主要包括:
ZOO_ENABLE_AUTH,则必须设置当前环境变量为 yestickTime。定义一个 Tick 的时间长度,以微秒为单位。该值为 ZooKeeper 使用的基础单位,用于心跳、超时等控制;如一般 Session 的最小超时时间为2个 TicksinitLimit。以 ticks 为单位的时间长度。用于控制从服务器与 Leader 连接及同步的时间。如果数据量比较大,可以适当增大该值syncLimit。以 ticks 为单位的时间长度。用于控制从服务器同步数据的时间。如果从服务器与 Leader 差距过大,将会被剔除maxClientCnxns。每个客户端允许的同时连接数(Socket层)。以 IP 地址来识别客户端standaloneEnabled中的定义。3.5.0版本新增。配置服务器工作模式,支持 Standalone 和 Distributed 两种。在服务器启动后无法重新切换。服务器启动时,默认会设置为 true,服务器将无法动态扩展。为了后续服务器可动态扩展,可设置该值为 false。
admin.enableServer中定义。3.5.0版本新增。 配置是否启用 AdminServer,该服务是一个内置的 Jetty 服务器,可以提供 HTTP 访问端口以支持四字命令。默认情况下,该服务工作在 8080 端口,访问方式为: URL "/commands/[command name]", 例如, http://localhost:8080/commands/stat。
ZOO_AUTOPURGE_PURGEINTERVAL:默认值:0。设置自动清理触发周期,参考 autoPurge.purgeInterval中的定义。以小时为单位自动清理触发时间。设置为正整数(1 或更大值)以启用服务器自动清理快照及日志功能。设置为 0 则不启用。
ZOO_AUTOPURGE_SNAPRETAINCOUNT:默认值:3。设置自动清理范围,参考autoPurge.snapRetainCount中的定义。当自动清理功能启用时,保留的最新快照或日志数量;其他的快照及保存在 dataDir、dataLogDir 中的数据将被清除。最小值为 3。
ZOO_4LW_COMMANDS_WHITELIST:默认值:srvr, mntr。设置白名单,参考 4lw.commands.whitelist中的定义。以逗号分隔的四字命令。需要将有效的四字命令使用该环境变量进行设置;如果不设置,则对应的四字命令默认不起作用。
如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括:
ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF, TRACE。输出方式取值可为多个,以,分隔,取值范围:CONSOLE、ROLLINGFILE、TRACEFILE使用 ZooKeeper 镜像,可以很容易的建立一个 ZooKeeper 集群。针对 ZooKeeper 的集群模式,有以下参数可以配置:
ZOO_SERVER_ID默认值:1
介于1~255之间的唯一值,用于标识服务器ID。需要注意,如果在初始化容器时使用一个存在myid文件的宿主机路径映射为容器的/srv/data数据卷,则相应的ZOO_SERVER_ID参数设置不起作用。容器中文件完整路径为:/srv/data/zookeeper/myid。
ZOO_SERVERS默认值:server.1=0.0.0.0:2888:3888
定义集群模式时的服务器列表。每个服务器使用类似server.id=host:port:port的格式进行定义,如:server.2=192.168.0.1:2888:3888。不同的服务器参数使用空格或逗号分隔。需要注意,如果在初始化容器时使用一个存在zoo.cfg文件的本地路径映射为/srv/conf数据卷,则相应的参数设置不起作用。文件完整路径为:/srv/conf/zookeeper/zoo.conf。此时如果需要更新配置,只能手动修改配置文件,并重新启动容器。
常用格式为 server.X=A:B:C,参考信息如下:
server.: 关键字,不可以更改更多信息,可参照文档 Zookeeper Dynamic Reconfiguration 中的介绍。
使用证书加密传输时,相关配置参数如下:
ZOO_TLS_CLIENT_ENABLE:启用或禁用 TLS。默认值:no
ZOO_TLS_PORT_NUMBER:使用 TLS 加密传输的端口。默认值:3181
ZOO_TLS_CLIENT_KEYSTORE_FILE:
ZOO_TLS_CLIENT_KEYSTORE_PASSWORD:
ZOO_TLS_CLIENT_TRUSTSTORE_FILE:
ZOO_TLS_CLIENT_TRUSTSTORE_PASSWORD:
ZOO_TLS_QUORUM_ENABLE:启用或禁用Quorum的 TLS。默认值:no
ZOO_TLS_QUORUM_KEYSTORE_FILE:
ZOO_TLS_QUORUM_KEYSTORE_PASSWORD:
ZOO_TLS_QUORUM_TRUSTSTORE_FILE:
ZOO_TLS_QUORUM_TRUSTSTORE_PASSWORD:
Zookeeper 镜像默认禁用了无密码访问功能,在实际生产环境中建议使用用户名及密码控制访问;如果为了测试需要,可以使用以下环境变量启用无密码访问功能:
ALLOW_ANONYMOUS_LOGIN=yes
通过配置环境变量ZOO_ENABLE_AUTH,可以启用基于 SASL/Digest-MD5 加密的用户认证功能。在启用用户认证时,同时需要设置相应用户名及密码。
启用认证后,用户使用 CLI 工具
zkCli.sh时,也需要进行认证,可通过. /usr/local/bin/entrypoint.sh来使用环境变量中的默认密码。
命令行使用参考:
$ docker run -d -e ZOO_ENABLE_AUTH=yes \
-e ZOO_SERVER_USERS=user1,user2 \
-e ZOO_SERVER_PASSWORDS=pass4user1,pass4user2 \
-e ZOO_CLIENT_USER=user1 \
-e ZOO_CLIENT_PASSWORD=pass4user1 \
colovu/zookeeper
使用 Docker Compose 时,docker-compose.yml应包含类似如下配置:
services:
zookeeper:
...
environment:
- ZOO_ENABLE_AUTH=yes
- ZOO_SERVER_USERS=user1,user2
- ZOO_SERVER_PASSWORDS=pass4user1,pass4user2
- ZOO_CLIENT_USER=user1
- ZOO_CLIENT_PASSWORD=pass4user1
...
本容器默认使用non-root运行应用,以加强容器的安全性。在使用non-root用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用non-root方式的容器,更适合在生产环境中使用。
如果需要切换为root方式运行应用,可以在启动命令中增加-u root以指定运行的用户。
本文原始来源 Endial Fang @ Github.com
Content type
Image
Digest
Size
99.4 MB
Last updated
about 5 years ago
docker pull colovu/zookeeper