• docker


    1.host网络

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

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

    2.bridge网络

    bridge 是一个很特殊的网络,Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定 --network,创建的容器默认都会挂到 docker0 上

    在host上面
    [root@docker226 yum.repos.d]# ip a

    3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 02:42:ed:c8:be:9d brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0

    5: vethb5f4665@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP
    link/ether 9e:78:8e:6c:a8:be brd ff:ff:ff:ff:ff:ff link-netnsid 0

    [root@docker226 yum.repos.d]# brctl show
    bridge name bridge id STP enabled interfaces
    docker0 8000.0242edc8be9d no vethb5f4665     (一个新的网络接口 vethcd8f150 被挂到了 docker0 上,vethcd8f150 就是新创建容器的虚拟网卡。)

    在docker里面

    [root@docker226 yum.repos.d]# docker   exec -it   0d6b3d648b98 /bin/bash

    root@0d6b3d648b98:/usr/local/apache2#ip a

    4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
    valid_lft forever preferred_lft forever

    Docker 每创建一个容器就会创建一组互联的网络接口。这组接口就像管道的两端(就是说,从一端发送的数据会在另一端接收到)。

    这组接口其中一端作为容器里的 eth0 接口,而领一端统一命名为类似 vethxxxx 这种名字,作为宿主机的一个端口。

    可以把 veth 接口认为是虚拟网线的一端。这个虚拟网线一端插在名为 docker0 的网桥上,另一端插到容器里。

    可以把它们想象成由一根虚拟网线连接起来的一对网卡,网卡的一头(eth0)在容器中,另一头(vethcd8f150)挂在网桥 docker0 上,其效果就是将 eth0@if39 也挂在了 docker0 上。

    3.用户定义网络

    Docker 本身提供两种网络驱动:bridge 和 overlay。bridge 只能用于单机网络模式,overlay 用于创建跨主机的网络

    docker network create -d bridge my_bridge

    [root@docker226 yum.repos.d]# brctl show
    bridge name bridge id STP enabled interfaces
    br-8c4ec67f261a 8000.0242de446a3a no
    docker0 8000.0242edc8be9d no vethb4e1e38

    4.自定义网络ip段

    如果要自定义网络 IP 段,只需在创建网段时指定--subnet--gateway参数:

    docker network create -d bridge --subnet 192.168.31.0/24 --gateway 192.168.31.1 my_bridge2

    容器要使用新的网络,需要在启动时通过--network指定:
    docker run -it --network=my_bridge2 --name busybox1 busybox

    5.给容器指定固定ip
    我们在启动容器的时候,可以通过参数 --ip 来指定特定的 IP,只有使用--subnet创建的 User-defined 网络才能指定静态 IP。

    docker run -it --network=my_bridge2 --ip 192.168.31.25 --name busybox2 busybox
    / # ip a
    
        
    44: eth0@if45: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:c0:a8:1f:19 brd ff:ff:ff:ff:ff:ff
        inet 192.168.31.25/24 scope global eth0
     6.不同网桥下容器互通
    [root@docker194 ~]# docker network connect   my_bridge168_31  docker0httpd17_2 (在创建网络和容器的时候要标明,不易混淆)

    Docker 网络(十一)-运维点滴记录-51CTO博客
    http://blog.51cto.com/wzlinux/2047243

    k8s网络架构

    4.kubernetes官方架构图



  • 相关阅读:
    TCP/IP模型及OSI七层参考模型各层的功能和主要协议
    Java – 虚函数、抽象函数、抽象类、接口
    Java CAS原理
    CAP原理中的一致性
    分布式系统CAP理论与CA选择
    数据库事务的特性、隔离级别、传播策略
    Java线程与锁
    JVM内存模型
    Java对象创建的过程及对象的内存布局与访问定位
    为什么Java匿名内部类访问的方法参数或方法局部变量需要被final修饰
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/8728375.html
Copyright © 2020-2023  润新知