1.下拉镜像:
docker pull zookeeper
2.运行镜像:
此处未采取在主机上保存配置文件,则当docker服务重启,数据文件和配置文件等都会被重新初始化。
docker run -p 2181:2181 --name myZookeeper --restart always -d zookeeper
挂载: -v /my/own/zoo.cfg:/conf/zoo.cfg /my/own/data:/data /my/own/logs:/logs
/my/own/zoo.cfg 主机配置文件 /my/own/data 主机数据文件 /my/own/logs 主机日志文件
--restart always 则会在docker启动或者zookeeper遇到错误时,自动重启容器。有以下几个值:
标志 描述 no
不自动重启容器(默认值) on-failure
如果容器由于错误而退出,则将其重新启动,非零退出代码表示错误 unless-stopped
重新启动容器,除非明确停止容器或者 Docker 被停止或重新启动 always
只要容器停止了,就重新启动
docker exec -it myZookeeper bash
vi ./conf/zoo.cfg
Time=2000
initLimit=10
syncLimit=5
dataDir=/data
dataLogDir=/logs
clientPort=2181
server.1=127.0.0.1:2888:3888
admin.serverPort=8888
cd /zookeeper-3.4.13/bin/
zkServer.sh restart
"server.id=host:port:port"标识了不同的ZooKeeper服务器的配置。id表示的是不同的服务器。每台机器使用三个端口,分别是 clientPort:2181; port:2888; port:3888。其中2888端口是进行leader选举的端口,而3888端口则是组成ZooKeeper服务的机器之间的通信端口。
在/data目录下,myid保存一个1即可:
vi myid
1
重启服务:
bin/zkServer.sh restart
ps #查看端口情况
exit#退出容器
查看容器的信息:
[root@localhost logs]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6218c7db6792 zookeeper "/docker-entrypoin..." 45 seconds ago Up 45 seconds 2181/tcp, 2888/tcp, 3888/tcp myZookeeper
启动zookeeper:
docker run -p 2181:2181 --name myZookeeper --restart always -d zookeeper
通过客户端连接已运行的zookeeper:
docker run -it --rm --link myZookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
Docker容器中的另一个应用程序连接到Zookeeper:
docker run --name someApp --link myZookeeper:zookeeper -d application-that-uses-zookeeper