docker网络1

介绍

docker安装好时,默认和创建一个网桥docker0在这里插入图片描述

docker0 相当于一个虚拟的交换机,给容器分配ip
在这里插入图片描述

网络配置模式

  • bridge :这个是默认配置,相当容器组主机的网络桥接起来
  • none: 默认是不配置网络,也不分配网络
  • host: 相当于虚拟机的仅主机模式,可以物理机互通,但不可以上网
  • container: 相当于的将网络网络放到一个已经有网络的容器中,与该容器共享网络
[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b768c4bd8731   bridge    bridge    local
0d7ef85d0f72   host      host      local
11e1747f3978   none      null      local 

在这里插入图片描述
简单点来说,docker容器启动,虚拟的网卡都是成对存在的。docker在的docker0上开了一个veth9b9d00f@if14的网卡连接的了容器里的eth0@if15,达到一个桥接的结果,实现网络互通!

自定义网络

帮助命令
docker network --help
docker network create --help

创建一个mynet的为bridege的虚拟网卡

[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b768c4bd8731   bridge    bridge    local
0d7ef85d0f72   host      host      local
68516e4c9b36   mynet     bridge    local
11e1747f3978   none      null      local
[root@localhost ~]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "68516e4c9b36810df729440efe177730ade4209a19b3a2e9f586cfee49942b96",
        "Created": "2022-04-17T11:43:32.558890099-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }

自定义网段的和网关的虚拟网卡

[root@localhost ~]# docker network create mynet1 --subnet 192.168.10.0/24 --gateway 192.168.10.1
3453ddd57b644c775857c7bb479d194ecd1d7db838fbc0cb0107f86f09efa7dd
[root@localhost ~]#
[root@localhost ~]# docker network inspect mynet1
[
    {
        "Name": "mynet1",
        "Id": "3453ddd57b644c775857c7bb479d194ecd1d7db838fbc0cb0107f86f09efa7dd",
        "Created": "2022-04-17T11:46:47.125733042-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.10.0/24",
                    "Gateway": "192.168.10.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }

启动容器

把容器b1 ,b2分配到我们自定义的网卡当中,

[root@localhost ~]# docker run -it --name b1 --net  mynet busybox ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
    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
24: eth0@if25: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever
[root@localhost ~]# docker run -it --name b2 --net  mynet1 busybox ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
    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
26: eth0@if27: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.2/24 brd 192.168.10.255 scope global eth0
       valid_lft forever preferred_lft forever

启动容器,自定义容器 b3 ,b4的IP

[root@localhost ~]# docker run -it --name b3 --net  mynet busybox ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
   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
32: eth0@if33: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
   link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
   inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
      valid_lft forever preferred_lft forever
[root@localhost ~]# docker run -it --name b4 --net mynet1 --ip 192.168.10.14 busybox ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
   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
34: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
   link/ether 02:42:c0:a8:0a:0e brd ff:ff:ff:ff:ff:ff
   inet 192.168.10.14/24 brd 192.168.10.255 scope global eth0
      valid_lft forever preferred_lft forever

注:
我这里mynet不是自定义网段,所以不能自定义IP地址
还有就是我这里直接查看IP地址,后台没有容器运行的,所以b3和b1的ip是一样的

网络互通

b1与b2可以正常通信!!!
在这里插入图片描述
方法1: --link(在docker )

[root@localhost ~]# docker run -itd --name b1 --net mynet busybox
3a9b42906fb36552842dd7c608e070fe4c2c95845f01c493c8903337c2f400f1
^[[A[root@localhost ~]# docker run -itd --name b2 --link b1 --net mynet busybox
964030f83c84216164971a7c5aa1e5b81347670761658ef7dde6e0b9cf075dee
[root@localhost ~]# docker attach b1
/ # ping b2
PING b1 (192.168.10.0.2): 56 data bytes
64 bytes from 192.168.0.2: seq=0 ttl=64 time=0.038 ms
64 bytes from 192.168.0.2: seq=1 ttl=64 time=0.075 ms
^C
--- b1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.038/0.056/0.075 ms
/ # exit
[root@localhost ~]# docker attach b2
/ # ping b1
ping: bad address 'b1'

–link缺点

需要两台容器都需要–link,且在容器run时就要添加,其实–link是修改了容器里的/etc/hosts文件。添加了地址解析!

方法2

–connect

[root@localhost ~]# docker network connect mynet b2
[root@localhost ~]# docker attach b1
/ # ping b2
PING b2 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.081 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.082 ms
^C
--- b2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.081/0.081/0.082 ms
/ #
[root@localhost ~]# docker attach b2
/ # ping b1
PING b1 (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.056 ms
64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.180 ms
^C
--- b1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.056/0.118/0.180 ms

<<<<<<<<<<<<<<<<<<<<<<<<个人学习笔记,有错误欢迎指出!!>>>>>>>>>>>>>>>>>>>>>>>>>>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值