Docker网络及docker-redis集群

本文最后更新于:2 年前

Docker网络

Docker有以下网络类型:
  • bridge:多由于独立container之间的通信 [1]
  • host: 直接使用宿主机的网络,端口也使用宿主机的
  • overlay:当有多个docker主机时,跨主机的container通信
  • macvlan:每个container都有一个虚拟的MAC地址
  • none: 禁用网络
Docker在默认情况下,分别会建立一个bridge、一个host和一个none的网络:
1
docker network ls 
NETWORK ID NAME DRIVER SCOPE
557d70cd18ab bridge bridge local
27015fb1d01c host host local
d7bdd36df894 none null local
查看网络详情
1
docker network inspect bridge
使用自建的bridge网络指定容器的ip
1
2
3
4
5
6
7
# 创建network,指定网段
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway 172.18.0.1 mynetwork
docker run -itd --name test01 --network my-network1 --ip 172.18.0.10 local/emqttd:v1

# 容器与其他子网的联通
docker network connect 网络名称 容器id
# 这样容器就有2个IP地址了,也可以跨网络了

Docker创建redis集群

清空环境
1
docker rm -f $(docker ps -aq)
shell脚本生成配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
for port in $(seq 1 6);
do
mkdir -p redis-700${port}/conf
touch redis-700${port}/conf/redis.conf
cat << EOF >> redis-700${port}/conf/redis.conf
port 6379
bind 0.0.0.0
requirepass cs007yun
masterauth cs007yun
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 172.18.0.6${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
EOF
done
通过脚本启动6个redis 指定了容器id和挂载卷
1
2
3
4
for port in $(seq 1 6);
do
docker run -itd --net mynetwork --ip 172.18.0.6${port} -p 700${port}:6379 -p 1700${port}:16379 --restart always --name redis-700${port} -v /usr/ local/docker-redis/redis-cluster/redis-700${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/docker-redis/redis-cluster/redis-700${port}/data:/data redis:5.0.9-buster redis-server /usr/local/etc/redis/redis.conf;
done
进入某个redis节点,启动集群 replicas = 1 一主一从
1
redis-cli -a cs007yun --cluster create 172.18.0.61:6379 172.18.0.62:6379 172.18.0.63:6379 172.18.0.64:6379 172.18.0.65:6379 172.18.0.66:6379 --cluster-replicas 1
查看集群状态
1
2
3
4
5
6
# 进入容器
docker exec -it redis-7003 /bin/bash
# 切换至指定目录
cd /usr/local/bin/
# 查看集群状态
redis-cli -a cs007yun --cluster check 172.18.0.61:6379
查看集群信息
1
2
3
4
5
6
#连接至集群某个节点
redis-cli -c -a cs007yun -h 172.18.0.61 -p 6379
#查看集群信息
cluster info
#查看集群结点信息
cluster nodes
参考资料