1.下拉鏡像:docker
docker pull zookeeperbash
2.運行鏡像:服務器
此處未採起在主機上保存配置文件,則當docker服務重啓,數據文件和配置文件等都會被從新初始化。app
docker run -p 2181:2181 --name myZookeeper --restart always -d zookeeperless
掛載: -v /my/own/zoo.cfg:/conf/zoo.cfg /my/own/data:/data /my/own/logs:/logstcp
/my/own/zoo.cfg 主機配置文件 /my/own/data 主機數據文件 /my/own/logs 主機日誌文件spa
--restart always 則會在docker啓動或者zookeeper遇到錯誤時,自動重啓容器。有如下幾個值:.net
標誌 描述 no
不自動重啓容器(默認值) on-failure
若是容器因爲錯誤而退出,則將其從新啓動,非零退出代碼表示錯誤 unless-stopped
從新啓動容器,除非明確中止容器或者 Docker 被中止或從新啓動 always
只要容器中止了,就從新啓動
docker exec -it myZookeeper bashrest
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