狂神docker——docker网络学习笔记

注:测试截图一直上传失败

Docker网络

docker容器内安装网络工具

root@2fd3289306e0:/usr/local/tomcat# apt-get update -y #要等他加载完成,不要Ctrl+C/(ㄒoㄒ)/~~
root@2fd3289306e0:/usr/local/tomcat# apt install -y iproute2
root@2fd3289306e0:/usr/local/tomcat# apt install iputils-ping
root@2fd3289306e0:/usr/local/tomcat# apt install net-tools

发现问题并解决

理解docker0

清空所有环境

# 删除所有容器
[root@localhost ~]# docker rm -f $(docker ps -aq)
​
# 删除所有镜像
[root@localhost ~]# docker rmi -f $(docker images -aq)
​
# 查看是否删除干净
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# 
ip addr

三个网络

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

#docker run -d -P --name tomcat01 tomcat
#问题:
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat01 ip addr
OCI runtime exec failed: exec failed: unable to start container process: exec: "ip": executable file not found in $PATH: unknown
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat01 /bin/bash
root@2fd3289306e0:/usr/local/tomcat# ip addr
bash: ip: command not found
#问题出现的原因:我们下载的某个镜像(例如tomcat镜像)是精简版的,使用此镜像去打开一个容器的时候,发现没有ip addr这个命令。
#解决办法:
root@2fd3289306e0:/usr/local/tomcat# apt-get update -y #要等他加载完成,不要Ctrl+C/(ㄒoㄒ)/~~
root@2fd3289306e0:/usr/local/tomcat# apt install -y iproute2
#问题解决,查看网络的IP地址 ip addr,发现容器启动的时候会得到一个eth0@if18的IP地址
root@2fd3289306e0:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
17: eth0@if18: <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 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat01 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
17: eth0@if18: <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 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@iZbp12ek0pnkij5zwark6lZ ~]# 
#Linux能否ping同容器
[root@iZbp12ek0pnkij5zwark6lZ ~]# 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.036 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.044 ms
^C
--- 172.17.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2074ms
rtt min/avg/max/mdev = 0.036/0.040/0.044/0.008 ms
#Linux可以ping通docker容器内部

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

拓展:evth-pair (我是搬运工)

就是 一对的虚拟设备接口,他们都是成对出现的, 一段连着协议,一段彼此相连,正因为有这个特性,evth-pair 充当一个桥梁 连接各种虚拟网络设备的

#再次执行ip addr ,发现多了一块网卡
[root@iZbp12ek0pnkij5zwark6lZ ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:16:3e:09:99:f7 brd ff:ff:ff:ff:ff:ff
    inet 172.27.127.63/20 brd 172.27.127.255 scope global dynamic eth0
       valid_lft 315300316sec preferred_lft 315300316sec
    inet6 fe80::216:3eff:fe09:99f7/64 scope link 
       valid_lft forever preferred_lft forever
3: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether de:21:db:dd:1c:0f brd ff:ff:ff:ff:ff:ff
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:69:f1:ac:13 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:69ff:fef1:ac13/64 scope link 
       valid_lft forever preferred_lft forever
18: vetha343c15@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether be:55:10:d3:4f:a4 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::bc55:10ff:fed3:4fa4/64 scope link 
       valid_lft forever preferred_lft forever
#tomcat01容器内  17: eth0@if18
#容器外          18: vetha343c15@if17
#在启动一个容器测试
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker run -d -P --name tomcat02 tomcat
7311d67743dd89f9538afa0ce8aa21944ea350c47d55c5178db3a57ed6ef4575
[root@iZbp12ek0pnkij5zwark6lZ ~]# ip addr
......
18: vetha343c15@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether be:55:10:d3:4f:a4 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::bc55:10ff:fed3:4fa4/64 scope link 
       valid_lft forever preferred_lft forever
20: veth8d484d5@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 02:7a:16:3c:12:dd brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::7a:16ff:fe3c:12dd/64 scope link 
       valid_lft forever preferred_lft forever
#发现又多了一块网卡,成对的20: veth8d484d5@if19    19: eth0@if20: 
#查看tomcat02容器内的
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat02 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
19: eth0@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
#发现又多了一块网卡,成对的20: veth8d484d5@if19    19: eth0@if20
#我们发现这个容器带来的网卡都是一对一对的
#evth-pair 就是一对虚拟设备接口,都是成对出现的,一端连着协议,一段彼此相连
#正因为有这个特性,我们利用evth-pair充当一个桥梁,连接各种虚拟网络设备的
  1. 我们测试下tomcat01 和tomcat02是否能ping 通

root@2fd3289306e0:/usr/local/tomcat# ping 172.17.0.1
bash: ping: command not found
root@2fd3289306e0:/usr/local/tomcat# apt install iputils-ping
root@2fd3289306e0:/usr/local/tomcat# ifconfig
bash: ifconfig: command not found
root@2fd3289306e0:/usr/local/tomcat# apt install net-tools
root@2fd3289306e0:/usr/local/tomcat# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 6327  bytes 10798674 (10.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5382  bytes 384899 (375.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
​
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
root@2fd3289306e0:/usr/local/tomcat# ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.072 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.056 ms
^C
--- 172.17.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2082ms
rtt min/avg/max/mdev = 0.056/0.066/0.072/0.007 ms
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat02 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.060 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.065 ms
^C
--- 172.17.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.060/0.062/0.065/0.002 ms
​
#容器和容器之间是可以相互通信的

绘制一个网络模型图

结论:tomcat01和tomcat02共用一个路由器,docker0

所有容器在不指定网络的情况下,都是通过docker0路由的,docker会给我们的每一个容器一个默认的IP

小结:

Docker使用的是Linux的桥接,宿主机中是一个Docker容器的网桥——docker0.

Docker 中的所有网络接口都是虚拟的。虚拟的转发效率高。

只要删除容器,对应的一对网桥就没有了

思考一个场景,我们编写了一个微服务,database url =ip; 项目不重启,数据ip换掉了,我们希望可以处理这个问题,可以按名字来进行访问容器

[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat01 ping tomcat02
ping: tomcat02: Name or service not known
#如何解决呢? 
[root@localhost ~]# docker exec -it tomcat02 ping tomcat01
ping: tomcat01: Name or service not known
# 通过--link既可以解决网络连通问题
[root@localhost ~]# docker run -d -P  --name tomcat03 --link tomcat02 tomcat
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat03 ping tomcat02
PING tomcat02 (172.17.0.3) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.3): icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=2 ttl=64 time=0.084 ms
64 bytes from tomcat02 (172.17.0.3): icmp_seq=3 ttl=64 time=0.058 ms
^C
--- tomcat02 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2076ms
rtt min/avg/max/mdev = 0.058/0.072/0.084/0.010 ms
#反向可以ping通吗?
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat02 ping tomcat03
ping: tomcat03: Name or service not known
# 查看docker所有的网络
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8aa9507b64f4   bridge    bridge    local
05df1ffce5c9   host      host      local
da26ebc0f59d   none      null      local
​
[root@localhost ~]# docker network inspect 容器ID

[root@localhost ~]# docker inspect tomcat03

#查看tomcat03的hosts配置
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker exec -it tomcat03 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.3  tomcat02 7311d67743dd
172.17.0.4  d66454c00c70
#--link就是在hosts配置中增加了172.17.0.3 tomcat02 7311d67743dd 映射
#查看下tomcat02的hosts配置
[root@iZbp12ek0pnkij5zwark6lZ ~]# 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.3  7311d67743dd 

本质探究:--link 就是我们在hosts配置中增加了一个 172.17.0.3 tomcat02 bc31af7e3491的映射

我们现在玩Docker已经不建议使用–link了!

我们自定义网络!不使用Docker0!

Docker0的问题:它不支持容器名链接访问!

自定义网络

[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network --help
Usage:  docker network COMMAND
Manage networks
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网络
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8aa9507b64f4   bridge    bridge    local
05df1ffce5c9   host      host      local
da26ebc0f59d   none      null      local
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network rm mynet #移除mynet网络
#网络模式
#bridge : 桥接 docker (默认,自己创建也使用bridge模式)
#none : 不配置网络
#host : 和宿主机共享网络
#container:容器网络连通(用的少,局限很大)
# 我们直接启动的命令默认有一个 --net bridge,而这个就是我们的docker0
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat
​
# docker0特点,默认,容器名不能访问, --link可以打通连接!
# 我们可以自定义一个网络!
# --driver bridge
# --subnet 192.168.0.0/16 可以支持255*255个网络 192.168.0.2 ~ 192.168.255.254
# --gateway 192.168.0.1
​
#我们自定义网络
[root@iZbp12ek0pnkij5zwark6lZ ~]# clear
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
862848341c9b4d32b77ead3fb7f846744700cc25f78eb1ffc1d4c3b17af1e3e9
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker network  ls
NETWORK ID     NAME      DRIVER    SCOPE
8aa9507b64f4   bridge    bridge    local
05df1ffce5c9   host      host      local
862848341c9b   mynet     bridge    local
da26ebc0f59d   none      null      local
​
#查看我们自己创建的网络
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker network  inspect  mynet
[
    {
        "Name": "mynet",
        "Id": "862848341c9b4d32b77ead3fb7f846744700cc25f78eb1ffc1d4c3b17af1e3e9",
        "Created": "2023-07-12T17:48:24.223838131+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": {},
        "Options": {},
        "Labels": {}
    }
]
#启动容器
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker run -d -P --name tomcat-net-01 --net mynet tomcat
fa394cae87ed1a911492a99d5b1b97fc55308e19712832736d4532d62d0d4db3
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker run -d -P --name tomcat-net-02 --net mynet tomcat
604c9112ce55d715ade4ea1bdd471f5cc480f19b6b8a8b467e8767f3a55bf000
#再次查看mynet
[root@iZbp12ek0pnkij5zwark6lZ ~]#  docker network  inspect  mynet
[
    {
        "Name": "mynet",
        "Id": "862848341c9b4d32b77ead3fb7f846744700cc25f78eb1ffc1d4c3b17af1e3e9",
        "Created": "2023-07-12T17:48:24.223838131+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": {
            "604c9112ce55d715ade4ea1bdd471f5cc480f19b6b8a8b467e8767f3a55bf000": {
                "Name": "tomcat-net-02",
                "EndpointID": "26bf677db4c36615da8b853db96b61d76e3a5cdda9ba64a4f6988e1c59472fd1",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "fa394cae87ed1a911492a99d5b1b97fc55308e19712832736d4532d62d0d4db3": {
                "Name": "tomcat-net-01",
                "EndpointID": "4749c70c1b75f6c3526e8ef33ab5fa0c823416da14e72366350bf6dfecd4aed6",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
# 测试,再次 ping 连接
[root@localhost ~]# 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.113 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.093 ms
^C
--- 192.168.0.3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.093/0.103/0.113/0.010 ms
​
# 现在不使用 --link也可以ping名字了!
[root@localhost ~]# 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.068 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.096 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.094 ms
​
#我们自定义的网络docker都已经帮我们维护好了对应的关系,docker0没有这样的功能,推荐我们平时这样使用网络

好处:

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

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

由于网段不同,所以两个网络是隔离的,确保了网络的安全健康

网络连通

docker network connect [OPTIONS] NETWORK CONTAINER 
#连接网络和容器名
#测试打通tomcat01和mynet
#连通之后就是将tomcat01的网络信息放到了mynet网络下
#一个容器两个IP,类似于阿里云服务器的两个IP,一个公网IP一个私网IP
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network connect mynet tomcat01
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network  inspect 
"docker network inspect" requires at least 1 argument.
See 'docker network inspect --help'.
​
Usage:  docker network inspect [OPTIONS] NETWORK [NETWORK...]
​
Display detailed information on one or more networks
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network  inspect mynet
[
                    .......
​
                "Name": "tomcat01",
                "EndpointID": "539582514a52612f454d969cabe9ada9dad0eb3de0785df798fde9ba229f95fe",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            },
            "604c9112ce55d715ade4ea1bdd471f5cc480f19b6b8a8b467e8767f3a55bf000": {
                "Name": "tomcat-net-02",
                "EndpointID": "26bf677db4c36615da8b853db96b61d76e3a5cdda9ba64a4f6988e1c59472fd1",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "fa394cae87ed1a911492a99d5b1b97fc55308e19712832736d4532d62d0d4db3": {
                "Name": "tomcat-net-01",
                "EndpointID": "4749c70c1b75f6c3526e8ef33ab5fa0c823416da14e72366350bf6dfecd4aed6",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        
        .....
        
]
​
#同样将tomcat02与mynet连接
[root@iZbp12ek0pnkij5zwark6lZ ~]# docker network  inspect  mynet
[
   
                ......
                
                
            "2fd3289306e0919dc7a91773f7de0cf9553da4a99d48c60035a47560bb6ab7a7": {
                "Name": "tomcat01",
                "EndpointID": "539582514a52612f454d969cabe9ada9dad0eb3de0785df798fde9ba229f95fe",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            },
            "604c9112ce55d715ade4ea1bdd471f5cc480f19b6b8a8b467e8767f3a55bf000": {
                "Name": "tomcat-net-02",
                "EndpointID": "26bf677db4c36615da8b853db96b61d76e3a5cdda9ba64a4f6988e1c59472fd1",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "7311d67743dd89f9538afa0ce8aa21944ea350c47d55c5178db3a57ed6ef4575": {
                "Name": "tomcat02",
                "EndpointID": "28b65601e480562ce6a9aa4d5f3b99f31922262970d68a896812aaf3d590b770",
                "MacAddress": "02:42:c0:a8:00:05",
                "IPv4Address": "192.168.0.5/16",
                "IPv6Address": ""
            },
            "fa394cae87ed1a911492a99d5b1b97fc55308e19712832736d4532d62d0d4db3": {
                "Name": "tomcat-net-01",
                "EndpointID": "4749c70c1b75f6c3526e8ef33ab5fa0c823416da14e72366350bf6dfecd4aed6",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
​
        ......
        
]
​
#测试
# 连通
[root@localhost ~]# 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.100 ms
64 bytes from tomcat-net-01.mynet (192.168.0.2): icmp_seq=2 ttl=64 time=0.085 ms
^C
--- tomcat-net-01 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.085/0.092/0.100/0.012 ms
​
# 当没有将tomcat02加入mynet时,依旧无法连通,没有connect
[root@localhost ~]# docker exec -it tomcat02 ping tomcat-net-01
ping: tomcat-net-01: Name or service not known
​
​
#测试打通tomcat01和mynet
#连通之后就是将tomcat01的网络信息放到了mynet网络下
#一个容器两个IP,类似于阿里云服务器的两个IP,一个公网IP一个私网IP
​
#在docker0网络里tomcat01的 IP:     172.17.0.2/16
#                        gateway:172.17.0.1/16
#在mynet网络里tomcat01的 IP:     192.168.0.4/16
#                      gateway:192.168.0.1/16

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值