在搭建一些基础服务集群时,如果每台节点去配置需要花费大量的时间在集群配置上面,docker compose功能提供了一种编排能力,只需要写docker-compose.yml文件就可以生成一套docker集群环境;
1. 下载zk镜像
docker pull zookeeper
默认安装的是最新版,如果你想安装指定版本的话,可以在 docker hub 下载指定的版本,比如:docker pull zookeeper:3.6
2. 配置网络
Docker有三种网络模式,bridge、host、none,在你创建容器的时候,不指定–network默认是bridge;
- bridge:为每一个容器分配IP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥与宿主机通信。也就是说,此模式下,你不能用宿主机的IP+容器映射端口来进行Docker容器之间的通信;
- host:容器不会虚拟自己的网卡,配置自己的IP,而是使用宿主机的IP和端口。这样一来,Docker容器之间的通信就可以用宿主机的IP+容器映射端口
- none:无网络;
2.1 创建网络
docker network create --driver bridge --subnet=172.20.0.0/16 --gateway=172.20.0.1 zk_network
2.2 查看网络配置
查看指定的网络配置:docker network inspect NETWORK ID
查看所有的网络:docker network ls
3. docker-compose的安装
首先通过 docker-compose --version 验证一下是否已经安装 docker-compose,如果没有安装,可通过下面的命令安装:
curl -L “https://github.com/docker/compose/releases/download/1.24.1/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
4. docker-compose.yml
version: '3'
services:
zoo1:
image: zookeeper
restart: always
privileged: true
hostname: zoo1
ports:
- 2181:2181
volumes: # 挂载数据
- /Users/test/docker/zk/node1/data:/data
- /Users/test/docker/zk/node1:/datalog
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 172.20.0.11
zoo2:
image: zookeeper
restart: always
privileged: true
hostname: zoo2
ports:
- 2182:2181
volumes: # 挂载数据
- /Users/test/docker/zk/node2/data:/data
- /Users/test/docker/zk/node2/datalog:/datalog
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 172.20.0.12
zoo3:
image: zookeeper
restart: always
privileged: true
hostname: zoo3
ports:
- 2183:2181
volumes: # 挂载数据
- /Users/test/docker/zk/node3/data:/data
- /Users/test/docker/zk/node3/datalog:/datalog
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
networks:
default:
ipv4_address: 172.20.0.13
networks: # 自定义网络
default:
external:
name: zk_network
其中需要创建如下目录:
/Users/test/docker/zk/node{1,2,3}/data
/Users/test/docker/zk/node{1,2,3}/datalog
/Users/test/docker/zk/compose 存放docker-compose.yml文件
5. 启动
docker-compose -f docker-compose.yml up -d
简写:docker-compose up
如果需要后台启动,需要加上-d参数;