集群的节点之间有着约定的ip,如果创建容器使用默认的网络,容器重启后ip会变化。所以需要自定义网络,创建容器时将ip挂载到自定义网络上。
必要命令创建自定义网桥
docker network create -d bridge --subnet 172.72.0.0/16 --gateway 172.72.0.1 网络名 (16是16个1的意思,指172的子网掩码,–gateway是网关可以不写,会自动创建0.1为网关)扩展命令
查询容器ip
docker inspect --format='{{.NetworkSettings.Networks.zoonet.IPAddress}}' 容器id/容器名
查看所有网络信息
docker network ls
查看某一网络ip分配情况
docker network inspect 网络id/网络名
删除网络
docker network rm 网络id/网络名二、准备redis.conf文件
Redis集群至少需要3个master节点,而每个master有一个slave用于挂掉顶上,所以要准备6个redis.conf文件。
redis6.2.5的redis.conf原始文件:提取码:nypw
为6个redis节点准备6个端口,从6391到6396。
以端口为6391的文件为例,需要改动的地方:
#bind 127.0.0.1 -::1 <-注释掉-> protected-mode no port 6391 daemonize no <-非守护运行,否则与docker run 冲突-> #pidfile /var/run/redis_6379.pid <-注释掉,当服务器非守护运行时,不会创建pid文件-> logfile /opt/docker/redis_test/redis_6391/redis_6391.log<-默认为"",会导致没有log文件-> dbfilename dump_6391.rdb dir /opt/docker/redis_test/redis_6391/ <-非常重要,rdb与log等文件挂载的目录-> masterauth 密码<-master密码-> requirepass 密码<-自己的密码-> <-masterauth与requirepass应一致,因为主从角色会切换-> <–cluster部分–> cluster-enabled yes cluster-announce-ip 192.168.XX.XX <-宿主ip-> cluster-announce-port 6391 cluster-announce-bus-port 16391 <-节点之间通信的总线端口,用6391+10000得到-> cluster-config-file nodes-6391.conf三、创建文件夹环境
根据redis.conf的dir,准备目录/opt/docker/redis_test/,及底下的六个文件夹redis_6391~redis_6396。
以redis_6391为例,将redis_6391.conf与空的redis_6391.log放进/opt/docker/redis_test/redis_6391/,与dir和logfile一致,并将redis_6381文件夹与log文件chmod 777(也可在redis_test目录下chmod 777 -R ./授权所有下文件及子文件夹)。
批量删除容器
docker ps -a | grep 容器关键字 | awk {'print $1'} | xargs docker rm -f



