• 容器(五)none和host网络的适用场景【26】


    五、网络

    (一)none和host网络的适用场景

    ​ 我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络。然后探讨容器之间如何通信,以及容器与外界如何交互。

    ​ Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,本章重点讨论前一种。对于更为复杂的多 host 容器网络,我们会在后面进阶技术章节单独讨论。

    (1)none网络

    ​ 故名思议,none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。

    root@cuiyongchao:~# docker run -it --network=none busybox
    / # ifconfig
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    / # 
    或者通过这个命令查看:
    root@cuiyongchao:~# docker inspect 97f1a9c1273d
    
    

    ​ 我们不禁会问,这样一个封闭的网络有什么用呢?其实还真有应用场景。封闭意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用 none 网络。比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。当然大部分容器是需要网络的,我们接着看 host 网络。

    (2)host网络

    ​ 连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过 --network=host 指定使用 host 网络。

    root@cuiyongchao:~# docker run -it --network=host busybox
    / # ifconfig
    docker0   Link encap:Ethernet  HWaddr 02:42:B3:16:D4:15  
              inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
              inet6 addr: fe80::42:b3ff:fe16:d415/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:23148 errors:0 dropped:0 overruns:0 frame:0
              TX packets:31722 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:1048354 (1023.7 KiB)  TX bytes:182793558 (174.3 MiB)
    
    ens33     Link encap:Ethernet  HWaddr 00:0C:29:A6:E4:3E  
              inet addr:10.0.0.20  Bcast:10.0.0.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fea6:e43e/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:580959 errors:0 dropped:0 overruns:0 frame:0
              TX packets:177669 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:704485368 (671.8 MiB)  TX bytes:67969849 (64.8 MiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:1550 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1550 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:168377 (164.4 KiB)  TX bytes:168377 (164.4 KiB)
    
    veth5693146 Link encap:Ethernet  HWaddr 86:59:CB:20:CA:B2  
              inet6 addr: fe80::8459:cbff:fe20:cab2/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:1286 (1.2 KiB)
    
    vethea16017 Link encap:Ethernet  HWaddr 7E:36:AE:14:FD:3A  
              inet6 addr: fe80::7c36:aeff:fe14:fd3a/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:1606 (1.5 KiB)
    
    vethf263a23 Link encap:Ethernet  HWaddr 56:47:0B:E5:EE:3D  
              inet6 addr: fe80::5447:bff:fee5:ee3d/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:1426 (1.3 KiB)
    / # hostname 
    cuiyongchao
    / # 
    后者通过这个命令查看network:
    root@cuiyongchao:~# docker inspect d748e45dc1cf
    
    

    ​ 在容器中可以看到 host 的所有网卡,并且连 hostname 也是 host 的。host 网络的使用场景又是什么呢?

    ​ 直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。

    ​ Docker host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨 host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables,大家将会在后面进阶技术章节看到。

  • 相关阅读:
    find the safest road HDU
    分页存储过程
    .NET Core与.NET Framework、Mono之间的关系
    winForm开发
    面试题目总结
    sqlserver锁表、解锁、查看锁表
    架构漫谈(四):如何做好架构之架构切分
    多线程讲解
    递归菜单简单应用
    杂记
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/13995350.html
Copyright © 2020-2023  润新知