前言
假設有三臺主機的,ip分別為:
主機一:192.168.1.76
主機二:192.168.1.35
主機三:192.168.1.82
三臺主機的安裝步驟相似,以主機一為例:
拉取官方zookeeper鏡像:
docker pull zookeeper:3.5
建立掛載目錄
mkdir -p /usr/local/docker/zookeeper/conf
mkdir -p /usr/local/docker/zookeeper/data
cd /usr/local/docker/zookeeper/conf
touch zoo.cfg
vi zoo.cfg
三臺主機的配置文件zoo.cfg的內(nèi)容如下:
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
server.1=192.168.1.76:2888:3888
server.2=192.168.1.35:2888:3888
server.3=192.168.1.82:2888:3888
在主機一上為自己分配server id,命令如下:
cd /usr/local/docker/zookeeper/data
touch myid
echo 1 > myid
在主機二上為自己分配server id,命令如下:
cd /usr/local/docker/zookeeper/data
touch myid
echo 2 > myid
在主機三上為自己分配server id,命令如下:
cd /usr/local/docker/zookeeper/data
touch myid
echo 3 > myid
啟動容器
docker run --privileged=true --network=host -v /usr/local/docker/zookeeper/data:/data -v /usr/local/docker/zookeeper/conf:/conf --name=zookeeper -d zookeeper:3.5
命令參數(shù)說明
- --network=host: 使用主機上的網(wǎng)絡配置,如果不用這種模式,而用默認的bridge模式,會導致容器跨主機間通信失敗
- -v /usr/local/docker/zookeeper/data:/data:主機的數(shù)據(jù)目錄掛載到容器/data下
- -v /usr/local/docker/zookeeper/conf:/conf: 主機的配置目錄掛載到容器的/conf下,容器內(nèi)的zkServer.sh默認會讀取/conf/zoo.cfg下的配置