Docker安装Zookeeper

3,313 阅读3分钟

前言

这里到Zookeeper了

常规梳理

关于镜像

这里选择zookeeper:3.5.7

关于环境变量

暂无。

这是经验所得,更详细的说明可去dockerhub搜相关镜像了解。

关于挂载目录及文件

  • /data:zookeeper持久化目录
  • /datalog:zookeeper日志目录
  • /conf/zoo.cfg:zookeeper配置文件

关于服务端口

  • 2181

为了更方便查看zookeeper的运行情况,这里顺道安装了可视化服务zkui。

定义文件样例

version: '2'
services:
  zookeeper:
    image: "zookeeper:3.5.7"
    restart: always
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "./data:/data"
      - "./datalog:/datalog"
      - "./conf/zoo.cfg:/conf/zoo.cfg"
    ports:
      - "2181:2181"
  zkui:
    environment:
      ZK_SERVER: "zookeeper:2181" # zkui需要访问zookeeper,这里对应的是services.zookeeper的那个key+port
    image: "registry.cn-hangzhou.aliyuncs.com/wkaca7114/zkui:latest"
    restart: always
    ports:
      - "9090:9090"
    depends_on:
      - zookeeper
    links:
      - zookeeper
  • services:服务定义,每个key对应一个服务
  • environment:环境变量定义
  • image:镜像
  • restart:重启策略
    • no,默认策略,在容器退出时不重启容器
    • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
    • on-failure:3,在容器非正常退出时重启容器,最多重启3次
    • always,在容器退出时总是重启容器
    • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
  • volumes:挂载目录及文件,左边为宿主,右边为容器
  • ports:端口映射,左边宿主,右边容器
  • depends_on:依赖关系,先启动zookeeper,再到自身
  • links:容器可连接到同配置文件下的services.zookeeper

开始安装

初始化目录

mkdir -p /docker-workspace/zookeeper/data
mkdir -p /docker-workspace/zookeeper/datalog
mkdir -p /docker-workspace/zookeeper/conf

添加配置文件

cat <<EOF > /docker-workspace/zookeeper/conf/zoo.cfg
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
4lw.commands.whitelist=*

EOF

添加定义文件

cat <<EOF > /docker-workspace/zookeeper/docker-compose.yml
version: '2'
services:
  zookeeper:
    image: "zookeeper:3.5.7"
    restart: always
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/docker-workspace/zookeeper/data:/data"
      - "/docker-workspace/zookeeper/datalog:/datalog"
      - "/docker-workspace/zookeeper/conf/zoo.cfg:/conf/zoo.cfg"
    ports:
      - "2181:2181"
  zkui:
    environment:
      ZK_SERVER: "zookeeper:2181"
    image: "registry.cn-hangzhou.aliyuncs.com/wkaca7114/zkui:latest"
    restart: always
    ports:
      - "9090:9090"
    depends_on:
      - zookeeper
    links:
      - zookeeper

EOF

运行实例

  • 后台运行实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml up -d
    

    下面命令可暂时跳过,直接跳到连接验证

  • 停止运行中的实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml stop
    
  • 开启运行中的实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml start
    
  • 重启运行中的实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml restart
    
  • 移出实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml down
    
  • 非后台运行实例

    docker-compose -f /docker-workspace/zookeeper/docker-compose.yml up
    

    最常用的是 docker-compose -f docker-compose.yml up -ddocker-compose -f docker-compose.yml down

  • 其他命令查看

    docker-compose -h
    

连接验证

浏览器访问:

http://192.168.1.100:9090

默认密码:

admin/manager

appconfig/appconfig

Zookeeper常规维护

传统的安装在宿主机上的Zookeeper,可直接登录主机维护。而使用docker后,会略微有些区别,会多加一步,进入容器。

如果仅启动了一个zookeeper实例,则可以使用如下命令进入容器。

docker exec -it $(docker ps -a | grep zookeeper | awk '{print $1}') bash

其实就是:

docker exec -it containerid bash

查看容器id命令

docker ps -a