天天看点

Docker之学习安装zookeeper 3.5.8 集群

环境:

docker :

从https://hub.docker.com/官网获取zookeeper版本

一、拉取镜像

docker pull zookeeper:3.5.8
           

二、docker容器之间的通信

Docker有三种网络模式,bridge、host、none,在你创建容器的时候,不指定--network默认是bridge。

bridge:为每一个容器分配IP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥与宿主机通信。也就是说,此模式下,你不能用宿主机的IP+容器映射端口来进行Docker容器之间的通信。

host:容器不会虚拟自己的网卡,配置自己的IP,而是使用宿主机的IP和端口。这样一来,Docker容器之间的通信就可以用宿主机的IP+容器映射端口

none:无网络。

1.查看网络

docker network ls
           

2.创建zookeeper的bridge网络,然后创建容器的时候指定ip。

docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 zknetwork
           

3.查看网络

docker network ls
           
Docker之学习安装zookeeper 3.5.8 集群

4.查看网络配置

docker network inspect ef622b1b8e37
           
Docker之学习安装zookeeper 3.5.8 集群

三、创建本地目录:

 1. 创建集群目录

mkdir zookeeper-cluster
           

 2.在zookeeper-cluster目录下创建:

mkdir node1
mkdir node2
mkdir node3
           

四、zookeeper集群容器的创建命令

docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --restart always --network zknetwork --ip 172.19.0.2 \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8

docker run -d -p 2182:2181 --name zookeeper_node2 --privileged --restart always --network zknetwork --ip 172.19.0.3 \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8

docker run -d -p 2183:2181 --name zookeeper_node3 --privileged --restart always --network zknetwork --ip 172.19.0.4 \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/data:/data \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/datalog:/datalog \
-v /home/docker/zookeeper/zookeeper-cluster/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=172.19.0.2:2888:3888;2181 server.2=172.19.0.3:2888:3888;2181 server.3=172.19.0.4:2888:3888;2181" zookeeper:3.5.8
           

五、参数解析

  1. 3.5.x开始,clientPort和clientPortAddress配置参数是server关键字规范的一部分。

  2. --privileged=true参数是为了解决【chown: changing ownership of '/data': Permission denied】,也可以省略true。

  3. 由于是在同一台服务器上安装zookeeper集群,则端口映射三个容器不一样,端口不能冲突,端口设置2181/2182/2183。

 4.   --restart=always     这个表示docker容器在停止或服务器开机之后会自动重新启动

六、验证zookeeper集群容器

 1.zookeeper_node1

  a.进入zookeeper_node1

docker exec -it zookeeper_node1 bash
           

  b.查看状态信息

./bin/zkServer.sh status
           
Docker之学习安装zookeeper 3.5.8 集群

  c.退出zookeeper_node1

exit
           
Docker之学习安装zookeeper 3.5.8 集群

 2.zookeeper_node2

   a.进入zookeeper_node2

docker exec -it zookeeper_node2 bash
           

   b.查看状态信息

./bin/zkServer.sh status
           
Docker之学习安装zookeeper 3.5.8 集群

  c.退出zookeeper_node2

exit
           
Docker之学习安装zookeeper 3.5.8 集群

3.zookeeper_node3

   a.进入zookeeper_node3

docker exec -it zookeeper_node3 bash
           

  b.查看状态信息

./bin/zkServer.sh status
           
Docker之学习安装zookeeper 3.5.8 集群

   c.退出zookeeper_node3

exit
           
Docker之学习安装zookeeper 3.5.8 集群