1、服务器下创建日志和数据文件夹
[root@VM-16-3-centos home]# mkdir /home/zookeeper-cluster
[root@VM-16-3-centos home]# mkdir /home/zookeeper-cluster/node1
[root@VM-16-3-centos home]# mkdir /home/zookeeper-cluster/node2
[root@VM-16-3-centos home]# mkdir /home/zookeeper-cluster/node3
2、先安装docker-compose
[root@VM-16-3-centos home]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 15.4M 100 15.4M 0 0 34135 0 0:07:53 0:07:53 --:--:-- 49746
3、赋权和看是否安装成功
[root@VM-16-3-centos bin]# chmod +x /usr/local/bin/docker-compose
[root@VM-16-3-centos bin]# docker-compose --version
docker-compose version 1.24.1, build 4667896b
4、若是一台服务器部署三个zk需要创建自己的bridge网络来内部通信
[root@VM-16-3-centos bin]# docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 zoonet
30f6d98c9a7077e75424c8e8b7612daa4cc844fa8beaa9ae337bad4b480df2c9
5、添加docker-compose文件
[root@VM-16-3-centos bin]# mkdir /home/DockerComposeFolder
[root@VM-16-3-centos bin]# vim /home/DockerComposeFolder/docker-compose.yml
6、编辑yml文件
version: '3.3'
services:
zoo1:
image: zookeeper
restart: always
privileged: true
hostname: zoo1
ports:
- 2281:2181
volumes: # 挂载数据
- /home/zookeeper-cluster/node1/data:/data
- /home/zookeeper-cluster/node1/datalog:/datalog
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=172.18.0.14:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 172.18.0.14
zoo2:
image: zookeeper
restart: always
privileged: true
hostname: zoo2
ports:
- 2282:2181
volumes: # 挂载数据
- /home/zookeeper-cluster/node2/data:/data
- /home/zookeeper-cluster/node2/datalog:/datalog
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=172.18.0.15:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 172.18.0.15
zoo3:
image: zookeeper
restart: always
privileged: true
hostname: zoo3
ports:
- 2283:2181
volumes: # 挂载数据
- /home/zookeeper-cluster/node3/data:/data
- /home/zookeeper-cluster/node3/datalog:/datalog
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=172.18.0.16:2888:3888;2181
networks:
default:
ipv4_address: 172.18.0.16
networks: # 自定义网络
default:
external:
name: zoonet
7、批量创建docker容器
[root@VM-16-3-centos bin]# docker-compose -f /home/DockerComposeFolder/docker-compose.yml up -d
Creating dockercomposefolder_zoo3_1 ... done
Creating dockercomposefolder_zoo2_1 ... done
Creating dockercomposefolder_zoo1_1 ... done
8、进入第一个容器验证
[root@VM-16-3-centos bin]# docker exec -it e9c14455d7e8 bash
root@zoo2:/apache-zookeeper-3.8.0-bin# ./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] create /hi
Created /hi
[zk: localhost:2181(CONNECTED) 3] ls /
[hi, zookeeper]
9、进入第二三个容器查看
[root@VM-16-3-centos bin]# docker exec -it b0e3fc5485b2 bash
root@zoo3:/apache-zookeeper-3.8.0-bin# ./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[hi, zookeeper]
[zk: localhost:2181(CONNECTED) 1] root@zoo3:/apache-zookeeper-3.8.0-bin# exit
exit
完美