青冥 青冥
首页
  • Java 基础
  • Java 进阶
  • Java Java 版本新特性
  • JVM
  • MySQL
  • Tomcat
  • Nginx
  • Spring 系列

    • Spring
    • Spring IOC
    • Spring AOP
    • Spring MVC
  • ORM

    • Mybatis
  • 设计模式

    • 23 种设计模式
  • 操作系统内核
  • JVM 内存模型
  • 并发同步处理
  • Atomic 原子操作
  • 队列(Queue)
  • 线程池(Thread Pool)
  • 分布式 - 消息中间件

    • 消息中间件
  • 分布式 - 存储中间件

    • 存储中间件
  • 分布式 - RPC 框架

    • RPC 框架
  • Spring Boot
  • Spring Cloud Alibaba
  • Spring Cloud Netflix
  • Git
  • Maven
  • Jenkins
  • Linux
  • 容器化

    • Docker
    • Kubernetes
  • 面试合集

    • 缓存
  • 实战项目
  • 数据结构与算法
  • 计算机原理
  • 大数据
  • 人工智能(AI)
  • 前端
  • 留言区
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 关于
  • 友情链接
🍊Gitlab (opens new window)

iByte Horizon

好记性不如烂笔头
首页
  • Java 基础
  • Java 进阶
  • Java Java 版本新特性
  • JVM
  • MySQL
  • Tomcat
  • Nginx
  • Spring 系列

    • Spring
    • Spring IOC
    • Spring AOP
    • Spring MVC
  • ORM

    • Mybatis
  • 设计模式

    • 23 种设计模式
  • 操作系统内核
  • JVM 内存模型
  • 并发同步处理
  • Atomic 原子操作
  • 队列(Queue)
  • 线程池(Thread Pool)
  • 分布式 - 消息中间件

    • 消息中间件
  • 分布式 - 存储中间件

    • 存储中间件
  • 分布式 - RPC 框架

    • RPC 框架
  • Spring Boot
  • Spring Cloud Alibaba
  • Spring Cloud Netflix
  • Git
  • Maven
  • Jenkins
  • Linux
  • 容器化

    • Docker
    • Kubernetes
  • 面试合集

    • 缓存
  • 实战项目
  • 数据结构与算法
  • 计算机原理
  • 大数据
  • 人工智能(AI)
  • 前端
  • 留言区
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 关于
  • 友情链接
🍊Gitlab (opens new window)
  • Git

  • Maven

  • Jenkins

  • Linux

  • 虚拟容器

    • Docker

      • 基础篇 Docker 安装与简介
      • 基础篇 Docker 常用命令
      • 基础篇 Docker 镜像
      • 基础篇 容器数据卷
      • 基础篇 Dockerfile
      • 高级篇 Docker 网络
        • 1. Docker0
          • 1.1 Linux 下的三个网络
          • 1.2 evth-pair 技术
          • 1.3 docker 可用IP
          • 1.4 docker 网络与宿主机
        • 2. --link
        • 3. 自定义网络
          • 3.1 四种docker 网络模式
          • 3.2 创建docker 网络
        • 4. 网络连通connect
        • 5. 项目实战
          • 5.1 部署Redis集群
      • 高级篇 Docker Compose
      • 辅助篇 Docker 常用服务安装
    • Kubernetes

  • 互联网工具 - 专题
  • 虚拟容器
  • Docker
沉梦昂志
2021-04-08
目录

高级篇 Docker 网络

内容概述

  • 1. Docker0
    • 1.1 Linux 下的三个网络
    • 1.2 evth-pair 技术
    • 1.3 docker 可用IP
    • 1.4 docker 网络与宿主机
  • 2. --link
  • 3. 自定义网络
    • 3.1 四种docker 网络模式
    • 3.2 创建docker 网络
  • 4. 网络连通connect
  • 5. 项目实战
    • 5.1 部署Redis集群

# 1. Docker0

在我们学习docker 网络学习之前,需要清空所有环境,避免环境影响。

docker rm -f $(docker ps -aq)       # 删除容器
docker rmi -f $(docker images -aq)  # 删除镜像
1
2

删除镜像 删除容器

# 1.1 Linux 下的三个网络

$ ip addr
1

ip addr

问题 :docker是如何处理容器网络访问的

# step 1:启动容器
[root@ibytehorizon ~]# docker run -d -P --name tomcat01 tomcat

# step 2:查看容器内部网络地址:ip addr,发现容器启动的时候会得到一个eth0@if5 ip地址,docker分配的
[root@ibytehorizon ~]# docker exec -it 0856401f30aa ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever

# 思考:Linux 能不能ping 通容器内部
root@ibytehorizon ~]# ping  172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.143 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.046 ms

# 结论:Linux 可以ping 通docker 容器内部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 1.2 evth-pair 技术

1、我们每启动一个docker 容器,docker 就会给docker 容器分配一个ip, 我们只要安装了docker,就会有一个网卡docker0,桥接模式,使用的技术是evth-pair技术!

evth-pair78 evth-pair79

2、再次测试ip addr,再启动一个容器测试,发现又多了一对儿网卡

evth-pair84 evth-pair85

  • 我们发现这个容器带来的网卡,都是成对出现的;
  • veth-path 就是一对的虚拟设备接口,它们都是成对出现的,一端连着协议,一端彼此相连;
  • 正因为有了这个特性,veth-path充当一个桥梁,专门连接各种虚拟网络设备的;
  • OpenStack,docker容器之间的连接,ovs的连接,都是使用veth-path技术。

3、我们来测试tomcat01 和tomcat02 是否可以ping通!

# 使用tomcat02 ping tomcat01
[root@ibytehorizon ~]# docker exec -it c6312ff65f66 ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.088 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.092 ms
# 结论:容器和容器之间是可以相互ping通的
1
2
3
4
5
6

绘制网络模型图:

docker 络模型图

  • 结论:tomcat01 和tomcat02 是公用一个路由器——docker0。
  • 所有的容器不指定网络情况下,都是docker0 路由的,docker会给我们的容器分配一个默认的可用ip。

# 1.3 docker 可用IP

  • 00000000.00000000.00000000.00000000 255.255.255.255

可用ip 多少个,只有最后的255个在范围内

  • 大域(大公司):255.255.0.1/16,255*255个
  • 小域(教室):255.255.0.1/24,255个

255.255.0.0 255*255 - 0.0.0.0(回环地址) - 255.255.255.255(最终地址)

# 1.4 docker 网络与宿主机

docker 使用的是linux 的桥接,宿主机中是一个docker容器的网桥 docker0。

docker 网桥

  • docker 中的所有网络接口都是虚拟的,虚拟的转发效率高(内网传递文件)
  • 只要容器删除,对应的网桥一对儿也就没了

# 2. --link

思考一个场景,我们编写一个微服务,database url=ip:port,项目不重启,数据库ip换掉了, 希望可以处理这个问题,可以用服务名来进行访问容器,类似Feign微服务调用!

# step1:尝试用服务名ping
[root@ibytehorizon ~]# docker exec -it tomcat02 ping tomcat01
ping: tomcat01: Name or service not known

# 如何解决
# 通过--link 就可以解决网络连通问题
[root@ibytehorizon ~]# docker run -d -P --name tomcat02 --link tomcat01 tomcat
a9d94802d563423976040c52594f1e7d94d832fb7ab44b3cab3943231b03c822
[root@ibytehorizon ~]# docker exec -it tomcat02 ping tomcat01
PING tomcat01 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat01 (172.17.0.3): icmp_seq=1 ttl=64 time=0.102 ms
64 bytes from tomcat01 (172.17.0.3): icmp_seq=2 ttl=64 time=0.156 ms

# 反向可以ping 通吗?
[root@ibytehorizon ~]# docker exec -it tomcat01 ping tomcat02
ping: tomcat03: Name or service not known

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

探究:inspect

inspect

其实这个tomcat02 就是在本地配置了tomcat01 的配置

# 查看hosts配置
[root@ibytehorizon ~]# docker exec -it tomcat02  cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      tomcat01 4a1cd75222f4
172.17.0.3      3bc613c8d481
1
2
3
4
5
6
7
8
9
10

本质探究:--link 就是在hosts配置中添加了一个172.17.0.3 tomcat02 c6312ff65f66

  • PS:现在docker 已经不建议使用--link了。
  • 自定义网络!不适用docker0。
  • docker0问题:不支持容器名连接访问。

# 3. 自定义网络

查看所有的docker网络

$ docker network ls
1

network

# 3.1 四种docker 网络模式

  • bridge:桥接 docker(默认,自己创建也使用bridge模式)
  • none:不配置网络
  • host:主机模式,和宿主机共享网络
  • container:容器内网络连通(用的少!局限性很大)

# 3.2 创建docker 网络

# 3.2.1 默认docker0 网络

如果不指定网络,每次我们启动容器的时候,都是使用的默认--net bridge,默认是docker0

# 等价
$ docker run -d -P  --name tomcat01 tomcat   
$ docker run -d -P  --name tomcat01 --net bridge tomcat
1
2
3

docker0特点:默认,域名不能访问,--link可以打通连接,但比较麻烦。

# 3.2.2 自定义网络

创建网桥

$ docker network create [options] 网桥名称
1

选项:

  • -d, --driver 网络模式,默认并且推荐:bridge(桥接模式)
  • --subnet 子网地址,格式:192.168.0.0/16,IP范围:192.168.0.2-192
  • --gateway 网关,一般都是子网地址:0.1,如:192.168.0.1

删除网桥

$ docker network rm 网桥名称
1

创建网络:

[root@ibytehorizon ~]# docker network create --driver bridge --subnet 192.168.0.0/16  --gateway 192.168.0.1 mynet
d003dfee5ea52638290b11ee87755757f7f5198f6c1688f606b49648c9e946ad
[root@ibytehorizon ~]# docker network ls
NETWORK ID          NAME                  DRIVER              SCOPE
70976e1fbff7        bridge                bridge              local
59b884b623b9        es_default            bridge              local
691152b0357a        host                  host                local
a2463380d98a        mongodb_default       bridge              local
d003dfee5ea5        mynet                 bridge              local
07d55a7fd8d0        mysql_default         bridge              local
cbce11a76d25        nacos_default         bridge              local
8c2ffbff70bd        none                  null                local
94fbfc6cc6b5        redis_redis-cluster   bridge              local
c6de1acf1385        rocketmq_default      bridge              local
1
2
3
4
5
6
7
8
9
10
11
12
13
14

自定义docker 网络

# 3.2.3 启动容器并指定自定义网络

$ docker run -d -P --name 容器名 --net 网桥名称 镜像ID|镜像名
1
[root@ibytehorizon ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
4111be3af69d20fb6bacace067183f3017a304fffb7775a3c91bbad6fd6cf984
[root@ibytehorizon ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
4111be3af69d20fb6bacace067183f3017a304fffb7775a3c91bbad6fd6cf984
# 查看网络
[root@ibytehorizon ~]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "d003dfee5ea52638290b11ee87755757f7f5198f6c1688f606b49648c9e946ad",
        "Created": "2025-03-19T16:58:39.170583638+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "9cb6386ff62f944a6eb750d64843e129007ecf62951734da74694ca563cb35a8": {
                "Name": "tomcat-net-02",
                "EndpointID": "152558979f76a36672ead3655de221d39ea50c821fab3a24dc0bf019e8d709ba",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "b85c805f2c4ca97d49762d9d999ae4c3449522bca28e634c613029e2d89cdedd": {
                "Name": "tomcat-net-01",
                "EndpointID": "4111be3af69d20fb6bacace067183f3017a304fffb7775a3c91bbad6fd6cf984",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# 3.2.4 自定义网络效果

[root@ibytehorizon ~]# docker exec -it tomcat-net-01 ping 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.109 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.073 ms
# 现在不使用--link也可以ping名字
[root@ibytehorizon ~]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.363 ms
1
2
3
4
5
6
7
8
9

结论:通过自定义网络,容器之间可以通过ip或者名称ping 通过。

我们自定义的网络docker 都已经帮我们维护好了对应关系,推荐我们平时这样使用网络! 这样做的好处:不同的集群使用不同的网络,保证集群是安全和健康的。

例如,一个宿主机同时安装了mysql和redis,那么:

  • redis-不同的集群使用不同的网络,保证集群是安全和健康的
  • mysql-不同的集群使用不同的网络,保证集群是安全和健康的

# 4. 网络连通connect

思考:两个不同的网段内的容器之间可以相互访问吗?

# docker0
[root@ibytehorizon ~]# docker run -d -P --name tomcat01 tomcat
9a73059af0b59a4ecc68c25f3f1b41505992d54e3dae2e0988c33cc5a67e2118
[root@ibytehorizon ~]# docker run -d -P --name tomcat02 tomcat
e24fd79c8d0baa2fd4f700b39d498b1a038c3428d4bbe96858b639843e2e9454

# mynet
[root@ibytehorizon ~]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
7f80b1d01c61347a79cd92cf7975955ddaa9aed9a738b013553162043fbe817d
[root@ibytehorizon ~]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
2ab7a2836c35381ed5a0a96042355871c2797f212c1a1af8de240bcf1647295a

# 测试
[root@ibytehorizon ~]# docker exec -it tomcat01 ping tomcat-net-01
ping: tomcat-net-01: Name or service not known
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

connect

# 将容器连接到网络
[root@ibytehorizon ~]# docker network --help
Usage:  docker network COMMAND
Manage networks
Options:
      --help   Print usage
Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

# 命令 docker network connect [OPTIONS] NETWORK CONTAINER
[root@ibytehorizon ~]# docker network connect --help
Usage:  docker network connect [OPTIONS] NETWORK CONTAINER
Connect a container to a network
Options:
      --alias stringSlice           Add network-scoped alias for the container
      --help                        Print usage
      --ip string                   IP Address
      --ip6 string                  IPv6 Address
      --link list                   Add link to another container (default [])
      --link-local-ip stringSlice   Add a link-local address for the container
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

因此,我们了解到可以通过connect 命令来对docker 网络进行打通。

$ docker network connect 网络 容器
1
# 测试打通tomcat01 到 mynet
[root@ibytehorizon ~]# docker network connect mynet tomcat01
# 查看
docker network inspect mynet
1
2
3
4

mynet打通Tomcat01

# tomcat01 连通mynet
[root@ibytehorizon ~]# docker exec -it tomcat01 ping tomcat-net-01
PING tomcat-net-01 (192.168.0.2) 56(84) bytes of data.
64 bytes from tomcat-net-01.mynet (192.168.0.2): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from tomcat-net-01.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.049 ms

# tomcat02 依旧ping 不通
[root@ibytehorizon ~]# docker exec -it tomcat02 ping tomcat-net-01
ping: tomcat-net-01: Name or service not known
1
2
3
4
5
6
7
8
9

结论:假设要跨网络操作别人,就需要使用docker network connect 连通!。。。。

# 5. 项目实战

# 5.1 部署Redis集群

集群模型示意图: Redis Cluster

shell脚本

# step 1:创建网卡
docker network create redis --subnet 172.38.0.0/16

# step 2:通过脚本创建6个redis配置
for port in $(seq 1 6);\
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

# step 3:启动Redis 服务
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \

docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6372:6379 -p 16372:16379 --name redis-2 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6373:6379 -p 16373:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6374:6379 -p 16374:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6375:6379 -p 16375:16379 --name redis-5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6376:6379 -p 16376:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

# step 4:创建集群
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas


[root@ibytehorizon conf]# docker exec -it redis-1 /bin/sh
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 172.38.0.15:6379 to 172.38.0.11:6379
Adding replica 172.38.0.16:6379 to 172.38.0.12:6379
Adding replica 172.38.0.14:6379 to 172.38.0.13:6379
M: 0f306ddeec08a73b1a53574a2270d8d675fb5b67 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
M: a444bf9892de175c1de2c827522841d3984e3536 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
M: fc69e86784d54eb6c68334caa3549c897f3e00c9 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
S: e41fa60721ac45f74f3142575bb494da6046e4c0 172.38.0.14:6379
   replicates fc69e86784d54eb6c68334caa3549c897f3e00c9
S: decda63ac09fb0881870e4a2460e257b2dd94c97 172.38.0.15:6379
   replicates 0f306ddeec08a73b1a53574a2270d8d675fb5b67
S: ccba9417e776577f422f7089afff76ce02c6da89 172.38.0.16:6379
   replicates a444bf9892de175c1de2c827522841d3984e3536
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 172.38.0.11:6379)
M: 0f306ddeec08a73b1a53574a2270d8d675fb5b67 172.38.0.11:6379
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: e41fa60721ac45f74f3142575bb494da6046e4c0 172.38.0.14:6379
   slots: (0 slots) slave
   replicates fc69e86784d54eb6c68334caa3549c897f3e00c9
M: a444bf9892de175c1de2c827522841d3984e3536 172.38.0.12:6379
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: decda63ac09fb0881870e4a2460e257b2dd94c97 172.38.0.15:6379
   slots: (0 slots) slave
   replicates 0f306ddeec08a73b1a53574a2270d8d675fb5b67
M: fc69e86784d54eb6c68334caa3549c897f3e00c9 172.38.0.13:6379
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: ccba9417e776577f422f7089afff76ce02c6da89 172.38.0.16:6379
   slots: (0 slots) slave
   replicates a444bf9892de175c1de2c827522841d3984e3536
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
/data # 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112

至此,docker 搭建redis 集群完成!

#docker网络#docker0
最近更新: 2025/03/25, 09:15:48
基础篇 Dockerfile
高级篇 Docker Compose

← 基础篇 Dockerfile 高级篇 Docker Compose→

最近更新
01
Kubernetes Helm
04-11
02
Kubernetets Namespace
04-11
03
Kubernetes Ingress
04-11
更多文章>
Theme by Vdoing | Copyright © 2021-2025 光年矩阵科技有限公司 | All Rights Reserved. |
渝ICP备2021888888号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×