0
点赞
收藏
分享

微信扫一扫

自定义网络

四月Ren间 2022-01-31 阅读 48

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

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的容器

[root@localhost dockerfile]# docker run -d -P --name tomcat-net-01 --net mynet 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----不同的集群使用不同的网络,保证集群的安全和健康

举报

相关推荐

0 条评论