14.docker网络基本知识

1.基本网络介绍

ip add

结果:
在这里插入图片描述
2.docker是如何处理容器内网络连接的呢?
原理:
1.我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式。使用的技术是evth-pair技术。
结论:
容器 和容器之间是可以相互ping 通的!
docker使用的是Linux的桥接,宿主机中的docker容器的网桥 是docker0.
docker中的所有的网络接口都是虚拟的,虚拟的转发效率高。
只要容器删除,对应的网桥就没有了。

3.自定义docker网络

docker network ls #查看所有的docker网络
[root@hc /]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
923c8521a545   bridge    bridge    local
c73d7061483e   host      host      local
c5527900ca76   none      null      local

docker 网络模式:

bridge 桥接(默认)
none 不配置网络
host 和宿主机共享网络
container 容器网络连通 (用的少!

查看docker network --help

[root@hc /]# 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

测试:

#直接启动的命令 --net bridge,这个就是我们的dockerO
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat01 --net bridge tomcat
#docker0特点,默认域名不能访问。--link 可以打通连接!

#自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

[root@hc /]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
923c8521a545   bridge    bridge    local
c73d7061483e   host      host      local
c5527900ca76   none      null      local
[root@hc /]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
a9a351b54f2ca1a772eda69d250d6678a6a6b870eae1c117776f27a0a0fbf50f
[root@hc /]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
923c8521a545   bridge    bridge    local
c73d7061483e   host      host      local
a9a351b54f2c   mynet     bridge    local
c5527900ca76   none      null      local

查看我们自己定义的网络

docker network inspect mynet

eg:

[root@hc /]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "a9a351b54f2ca1a772eda69d250d6678a6a6b870eae1c117776f27a0a0fbf50f",
        "Created": "2021-06-12T23:41:18.368452463+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": {}
    }
]

实战:
运行tomcat 走我们自定义的docker 网络

docker run -d -P --name tomcat-net-mine-01 --net mynet tomcat

启动成功了之后,查看我们自定义的网络中容器的连接

docker network inspect mynet
[root@hc /]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "a9a351b54f2ca1a772eda69d250d6678a6a6b870eae1c117776f27a0a0fbf50f",
        "Created": "2021-06-12T23:41:18.368452463+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": {
            "036a7c2996cb348e0f25486a97f18f2ff9d1dfde96a38e0bdab24b900a604162": {
                "Name": "tomcat-net-mine-02",
                "EndpointID": "53e6dd8eb28cb43a02372320e805be45ef738fe73eb52e05d7d350b65c576e1e",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "aba04421698628cc49d9694b3dfb1f62acd8fe67cbc649be47ca30c2273b26e1": {
                "Name": "tomcat-net-mine-01",
                "EndpointID": "5108a592f9b96c242569e3ee871b031854299e8fa9422b65a314fab616dba32f",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

用tomcat-net-mine-01 去ping tomcat-net-mine-02

[root@hc /]# docker exec -it tomcat-net-mine-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.069 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.039 ms

[root@hc /]# docker exec -it tomcat-net-mine-01 ping tomcat-net-mine-02
PING tomcat-net-mine-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.036 ms

说明:自定义的网络 不使用–link 也可以ping 名字了

好处:
如redis集群 不同的集群使用不同的网络,保证集群 是安全和健康的!

网络连通原理

测试打通tomcat01 到 tomcat-net-mine-02

dockers network connet mynet tomcat01
[root@hc /]# docker network connect mynet tomcat01
[root@hc /]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "a9a351b54f2ca1a772eda69d250d6678a6a6b870eae1c117776f27a0a0fbf50f",
        "Created": "2021-06-12T23:41:18.368452463+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": {
            "036a7c2996cb348e0f25486a97f18f2ff9d1dfde96a38e0bdab24b900a604162": {
                "Name": "tomcat-net-mine-02",
                "EndpointID": "53e6dd8eb28cb43a02372320e805be45ef738fe73eb52e05d7d350b65c576e1e",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            },
            "599f92f679ba08ebfb9d13ccd1b5b2cd3bea4dbe9a5ecb47d7027ad7c9c4d5f2": {
                "Name": "tomcat01",
                "EndpointID": "799de5cd20844284a816fc31568106a318ad6a03d65c1c0d676ab90d0b0e28eb",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            },
            "aba04421698628cc49d9694b3dfb1f62acd8fe67cbc649be47ca30c2273b26e1": {
                "Name": "tomcat-net-mine-01",
                "EndpointID": "5108a592f9b96c242569e3ee871b031854299e8fa9422b65a314fab616dba32f",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

联通之后,就是将tomcat01放到了mynet网络下

验证: docker exec -it tomcat01 ping tomcat-net-mine-02
[root@hc /]# docker exec -it tomcat01 ping tomcat-net-mine-02
PING tomcat-net-mine-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from tomcat-net-mine-02.mynet (192.168.0.3): icmp_seq=3 ttl=64 time=0.038 ms

目前 只是tomcat01 连通了mynet 网络。
tomcat-net-mine-02 没有联调docker0

==============================================
docker 网络的使用
a.查看docker网桥配置

docker network ls #查看docker网桥配置

b.创建自定义网桥

docker  network create ems(网桥名称)  ===》docker network  create -d bridge ems(网桥名称) 

c.启动容器时指定网桥
eg:

docker run -d --name myApp -p 8080:8080 --network ems 镜像名

d.删除网桥

docker network rm 网桥名|网桥id

e.查看网桥内部信息

docker inspect 网桥名|网桥id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值