• 031、none和host网络的适用场景(2019-02-18 周一)


     
    本节开始,会学习docker的几种原生网络,以及如何创建自定义网络。然后探究容器之间如何通信,以及容器与外界如何交互
     
    docker网络从覆盖范围可以分为单个host上的容器网络和跨多个host的网络,本章终点学习前一种。对于更复杂的多host网络,将在后面的进阶部分学习。
     
    docker安装时会自动在host上创建三个网络,我们可以用docker network ls 命令查看
     
    root@docker-lab:~# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    b41bf72cd691        bridge              bridge              local
    e5cb8d603efd        host                host                local
    f9dc6032baba        none                null                local
     
    none网络
     
    none网络就是什么网络都没有,挂载这个网络下的容器除了lo以外,没有其他网卡。容器创建时,可以通过 --network=none 指定容器使用none网络。
     
    root@docker-lab:~# docker run -it --network=none busybox
    / # ifconfig -a
    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:1
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    / #
     
    一个封闭的网络有什么用呢,封闭即隔离,一些对安全性要求较高并且不需要联网的应用可以使用none网络,比如专门用来生成随机密码的容器。
     
    host网络
     
    连接到host网络的容器共享docker host的网络栈,容器的网络配置与docker host完全一样。可以通过 --network=host 指定容器使用host网络
     
    root@docker-lab:~# ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
    3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
        link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
        link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
    root@docker-lab:~# docker run -it --network=host busybox
    / # ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
        link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
    3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
        link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
    4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
        link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
    / #
    / # hostname
    docker-lab
     
     
    可以看到host网络的容器,使用的网络以及hostname都和docker host一样
     
    直接使用host网络最大的好处就是性能,如果容器对网络传输效率要求比较高,则可以选择host网络。
     
    缺点是灵活性差,容器和docker host公用一套端口,需要解决端口冲突的问题。
     
    host网络的另一个用途是让容器可以直接配置docker host网络,比如某些跨docker host的网络解决方案,其本身也是以容器方式运行,这些方案需要对网络进行配置,比如管理iptables,后面的章节会做详细介绍
     
  • 相关阅读:
    Hyper-V无法启动虚拟机因为虚拟机监控程序未运行
    SpringBoot项目中自动加载datasourceConfig配置导致启动失败
    redis 数据类型与命令
    Redis入门与安装,与配置
    MySQL 主从配置
    MySql 中的事务
    什么是Docker?
    window10下安装Docker
    Docker 常见命令
    原生SQL语句
  • 原文地址:https://www.cnblogs.com/www1707/p/10398729.html
Copyright © 2020-2023  润新知