1)下载
1 2 |
|
2)Dockfile编写
FROM centos RUN yum -y install tar yum-utils hostname net-tools RUN mkdir /opt/java && mkdir /opt/zookeeper COPY jdk-8u141-linux-x64.tar.gz /opt/java RUN tar zxf /opt/java/jdk-8u141-linux-x64.tar.gz -C /opt/java &&\ JAVA_HOME=/opt/java/jdk1.8.0_141 &&\ sed -i "/^PATH/i export JAVA_HOME=$JAVA_HOME" /root/.bash_profile &&\ sed -i "s%^PATH.*$%&:$JAVA_HOME/bin%g" /root/.bash_profile &&\ source /root/.bash_profile ENV ZOOKEEPER_VERSION=3.4.12 COPY zookeeper-"$ZOOKEEPER_VERSION".tar.gz /opt/zookeeper RUN tar zxf /opt/zookeeper/zookeeper*.tar.gz -C /opt/zookeeper COPY start.sh /opt/zookeeper/ RUN chmod +x /opt/zookeeper/start.sh EXPOSE 2181 ENTRYPOINT ["sh", "/opt/zookeeper/start.sh", "3.4.12"]
3)zookeeper启动脚本start.sh
#!/user/bin/sh ZOOKEEPER_VERSION=$1 source /root/.bash_profile cp /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo_sample.cfg /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo.cfg echo server.1=zk1:2888:3888 >> /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo.cfg echo server.2=zk2:2888:3888 >> /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo.cfg echo server.3=zk3:2888:3888 >> /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/conf/zoo.cfg mkdir -p /tmp/zookeeper echo $2 > /tmp/zookeeper/myid /opt/zookeeper/zookeeper-"$ZOOKEEPER_VERSION"/bin/zkServer.sh start-foreground
4)主机配置hosts 修改/etc/hosts末尾添加, 启动的容器使用主机的hosts
1 2 3 |
|
5)
生成 image: docker build -t myzookeeper 启动三个容器: docker run -it --name zk1 --hostname zk1 $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -d myzookeeper 1 docker run -it --name zk2 --hostname zk2 $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -d myzookeeper 2 docker run -it --name zk3 --hostname zk3 $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') -d myzookeeper 3
6)查看所有的容器主机名和IP
1 |
|
7)查看zookeeper状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
8)用客户端连接
1 |
|
9)zookeeper的c++使用
1 |
|