一、下载镜像
docker镜像的下载不推荐不加标签或者使用latest标签,因为这两种情况都代表下载最新的标签,而最新的标签不是固定的,不利于排查问题的时候定位版本。
docker pull zookeeper:3.7.0
二、单机模式
2.1 单机启动
docker run -d -p 2181:2181 -e TZ="Asia/Shanghai" -v data-zookeeper:/data --name my-zookeeper --restart always zookeeper:3.7.0
-e TZ="Asia/Shanghai" # 指定上海时区
-d # 表示在一直在后台运行容器
-p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
--name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;前者是Docker Desktop创建的卷,后者是容器中的目录
--restart always #始终重新启动zookeeper
--rm 容器退出的时候,默认容器内部的文件系统仍然被保留;此参数对非后台运行的容器,当退出的时候自动清理用户的数据文件。这只是一个连接zookeeper的客户端,因此无需保留任何数据文件。这里如果只是测试,可以加上这个参数
2.2 连接测试
docker run -it --rm --name link-zookeeper --link my-zookeeper:zookeeper zookeeper:3.7.0 zkCli.sh -server zookeeper
-it 以可交互的终端模式运行
--rm 容器退出的时候,默认容器内部的文件系统仍然被保留;此参数对非后台运行的容器,当退出的时候自动清理用户的数据文件。这只是一个连接zookeeper的客户端,因此无需保留任何数据文件。
--link my-zookeeper:zookeeper 其中my-zookeeper是上例中启动的zookeeper的name,zookeeper是站在这个连接容器(link-zookeeper)的角度对上述启动的zookeeper容器的别名。进入这个连接容器,ping my-zookeeper和zookeeper都是指向同一个服务。
zkCli.sh -server zookeeper 这句话是在容器内部,使用zk客户端命令,连接zookeeper的服务,这里的zookeeper就是link中的第二个参数
2.3 zookeeper简单操作
create /zk "test" # 创建节点,并设置值
set /zk "test2" # 更新节点值
delete /zk #删除节点值
ls -R / #递归查询所有节点
ls /zk #查询某个节点
get /zk #查询某个节点值
2.4 进入zookeeper容器
docker exec -it my-zookeeper /bin/bash
进入容器命令,类似ssh连接到这个运行zookeeper的操作系统中。
2.4.1 扩展
实际生产环境,一般不使用root用户启动应用,而有时候需要临时解决一些问题,必须使用root用户进行容器中,这种情况下可以指定用户身份进入容器,如下:
docker exec -it -u root my-zookeeper /bin/bash
-u root 指定以root身份进入容器
网友评论