自定义网络

通过自定义网络来实现容器互联

name表示网络模式

bridge:桥接

none:不配置网络

host:和宿主机共享网络

container:容器网络连通(用得少!)

[root@localhost dockerfile]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
65f61d1d236d   bridge    bridge    local
7997a9ebd537   host      host      local
ba70c8c166a2   none      null      local

测试:

我们默认启动的是--net bridge,这个bridge指的就是docker0,不写也是--net bridge

[root@localhost dockerfile]# docker run -d -P --name tomcat01 --net bridge tomcat
42fc0ed69939a50f511770c9209e3b8827baa195db6cd9954e7953d40033dbf6
[root@localhost dockerfile]# 

 创建了一个自定义网络。

[root@localhost dockerfile]# docker network create --driver bridge --subnet 10.10.0.0/16 --gateway 10.10.0.1 mynet
6427032687c1c324b6ec97a8ae517d94d25809e67d2482321dba77a27c1a3339
[root@localhost dockerfile]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
65f61d1d236d   bridge    bridge    local
7997a9ebd537   host      host      local
6427032687c1   mynet     bridge    local
ba70c8c166a2   none      null      local

创建完会显示如下信息 

[root@localhost dockerfile]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 ens33
10.10.0.0       0.0.0.0         255.255.0.0     U     0      0        0 br-00f465c933dc
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
[root@localhost dockerfile]# 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:71:6e:65 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.177/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::740c:b13c:7ae:d319/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:43:fe:4b:6c 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:43ff:fefe:4b6c/64 scope link 
       valid_lft forever preferred_lft forever
59: veth228ab55@if58: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 7e:c5:5e:93:7e:64 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::7cc5:5eff:fe93:7e64/64 scope link 
       valid_lft forever preferred_lft forever
61: br-00f465c933dc: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:cf:d7:61:f9 brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.1/16 brd 10.10.255.255 scope global br-00f465c933dc
       valid_lft forever preferred_lft forever
[root@localhost dockerfile]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
65f61d1d236d   bridge    bridge    local
7997a9ebd537   host      host      local
00f465c933dc   mynet     bridge    local
ba70c8c166a2   none      null      local
[root@localhost dockerfile]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "00f465c933dc1ebb1aa7bf26874fdacbe307ea254d5b70972936da1b43b4b3af",
        "Created": "2022-01-31T15:59:51.915435714+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "Gateway": "10.10.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

在自己设置的网络里启动两个tomcat的容器,可以用--ip来具体设置容器在mynet里的IP

[root@localhost dockerfile]# docker run -d -P --name tomcat-net-01 --net mynet --ip 10.10.0.3 tomcat
1db7e1496c33ef21203f0e5a87b5394520b55d115b485d9f4ca91c2e23a68da4
[root@localhost dockerfile]# docker run -d -P --name tomcat-net-02 --net mynet tomcat

 在我自己的网络里就存在了这两个container

[root@localhost dockerfile]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "00f465c933dc1ebb1aa7bf26874fdacbe307ea254d5b70972936da1b43b4b3af",
        "Created": "2022-01-31T15:59:51.915435714+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "Gateway": "10.10.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1db7e1496c33ef21203f0e5a87b5394520b55d115b485d9f4ca91c2e23a68da4": {
                "Name": "tomcat-net-01",
                "EndpointID": "0aa3531657bc88fce947068bc6821460d2bf883a4b7466d7b5059ac34d22aaf6",
                "MacAddress": "02:42:0a:0a:00:02",
                "IPv4Address": "10.10.0.2/16",
                "IPv6Address": ""
            },
            "58789ef7b755da750fb0466224304125eae135c1f644c1128f22192036b7f71f": {
                "Name": "tomcat-net-02",
                "EndpointID": "d14eba00e674b68b5ed9e3a19c720c708721cad51d69263575f8feee3a411413",
                "MacAddress": "02:42:0a:0a:00:03",
                "IPv4Address": "10.10.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

 这个时候再去ping tomcat-net-01 直接就可以ping了,而且ping IP也是可以的。

[root@localhost dockerfile]# docker exec -it tomcat-net-02 ping tomcat-net-01

 好处:

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

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

网络连通

那不同的网络下的怎么连通呢?比如docker0下面的容器,和Mynet下面的容器如何连通?

[root@localhost dockerfile]# docker network inspect 65f61d1d236d
[
    {
        "Name": "bridge",
        "Id": "65f61d1d236de31ba89654b1cb9e718394a8cc60a678e0f98528576b140cba89",
        "Created": "2022-01-28T06:16:18.252096262+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "26f2cf7b24c297403a5578494099a86648ae0f2fcc0573985c066da4f9864f6c": {
                "Name": "tomcat02",
                "EndpointID": "dfa7a3ae39230a9267b080741bbd4d3ebf0483759a59fc00683ede673a216a38",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "42fc0ed69939a50f511770c9209e3b8827baa195db6cd9954e7953d40033dbf6": {
                "Name": "tomcat01",
                "EndpointID": "f79340292ce9a1139ebfb9ba95cd6af9711c6b4c2e8eaf30380053a257a862c9",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[root@localhost dockerfile]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "00f465c933dc1ebb1aa7bf26874fdacbe307ea254d5b70972936da1b43b4b3af",
        "Created": "2022-01-31T15:59:51.915435714+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "Gateway": "10.10.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1db7e1496c33ef21203f0e5a87b5394520b55d115b485d9f4ca91c2e23a68da4": {
                "Name": "tomcat-net-01",
                "EndpointID": "0aa3531657bc88fce947068bc6821460d2bf883a4b7466d7b5059ac34d22aaf6",
                "MacAddress": "02:42:0a:0a:00:02",
                "IPv4Address": "10.10.0.2/16",
                "IPv6Address": ""
            },
            "58789ef7b755da750fb0466224304125eae135c1f644c1128f22192036b7f71f": {
                "Name": "tomcat-net-02",
                "EndpointID": "d14eba00e674b68b5ed9e3a19c720c708721cad51d69263575f8feee3a411413",
                "MacAddress": "02:42:0a:0a:00:03",
                "IPv4Address": "10.10.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
[root@localhost dockerfile]# 

用docker network connect命令直接连通了tomcat01和mynet,这样tomcat01就有了两个IP。

[root@localhost dockerfile]# docker network connect mynet tomcat01
[root@localhost dockerfile]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "00f465c933dc1ebb1aa7bf26874fdacbe307ea254d5b70972936da1b43b4b3af",
        "Created": "2022-01-31T15:59:51.915435714+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "Gateway": "10.10.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1db7e1496c33ef21203f0e5a87b5394520b55d115b485d9f4ca91c2e23a68da4": {
                "Name": "tomcat-net-01",
                "EndpointID": "0aa3531657bc88fce947068bc6821460d2bf883a4b7466d7b5059ac34d22aaf6",
                "MacAddress": "02:42:0a:0a:00:02",
                "IPv4Address": "10.10.0.2/16",
                "IPv6Address": ""
            },
            "42fc0ed69939a50f511770c9209e3b8827baa195db6cd9954e7953d40033dbf6": {
                "Name": "tomcat01",
                "EndpointID": "284f3fdf5ff02b7f041ffb274e046ec71fcb2b1fdcf8f8c2a1688b33448eaac0",
                "MacAddress": "02:42:0a:0a:00:04",
                "IPv4Address": "10.10.0.4/16",
                "IPv6Address": ""
            },
            "58789ef7b755da750fb0466224304125eae135c1f644c1128f22192036b7f71f": {
                "Name": "tomcat-net-02",
                "EndpointID": "d14eba00e674b68b5ed9e3a19c720c708721cad51d69263575f8feee3a411413",
                "MacAddress": "02:42:0a:0a:00:03",
                "IPv4Address": "10.10.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

 就可以ping通

docker exec -it tomcat01 ping tomcat-net-01

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值