• 003-docker-单宿主机下的网络模式


    docker利用namespaces和cgroups实现了应用隔离和资源控制,那么网络层优势如何实现的呢?是直接使用宿主机的网卡设备,还是独立创造出自己的网络设备?以及容器如何与外界通信,下面我们通过简单的说明以及示例,讨论下单机模式下docker的网络模式。

    docker单机模式下,主要有四种网络模式,可以在创建容器的时候通过--network参数指定,这四种网络模式如下:

    1、--network=bridge:网桥模式,这是docker默认的网络模式,这种模式下,容器创建的时候,会生成一个独立的网卡设备eth0,但是这个网卡设备无法直接同外部通信,需要通过网络设备对veth,将容器内的eth0与docker0网桥连通,然后docker0与宿主机的eth0通过转发绑定端口映射,实现容器内部同外部的通信。

    容器创建语法:docker run -d --name container_name --network bridge -p xxx:xxx image_name,由于是默认的,所以不指定--network参数默认就是这种模式

    示意图如下:

     

    2、--network=container:这种模式,docker在创建容器的时候会指定使用已经存在的容器的网卡设备作为新建容器的网卡设备。这中模式需要注意,由于是多个容器共用同一个eth0,所以需要注意端口冲突问题。

    容器创建语法:docker run -d --name container_name --network container:已经存在的容器名称  -p xxx:xxx image_name

    示意图如下:

    3、--network=host:这种模式,创建容器的时候,不会新建网卡设备,而是使用宿主机的网卡设备eth0,在这种模式下,容器直接使用宿主机的IP,同样要注意端口的冲突问题。

     容器创建语法:docker run -d --name container_name --network host -p xxx:xxx image_name

     示意图如下:

     4、--network=none:这种模式下,容器无法与外界通信,只能使用容器内部的回环(127.0.0.1)在容器内部通信。

     容器创建语法:docker run -d --name container_name --network none  image_name

     示意图如下:

      

    以上是单机模式下docker的网络模式

  • 相关阅读:
    《我想进大厂》之mysql夺命连环13问
    抽象数据类型的表示与实现
    数据结构两个层次——逻辑结构和存储结构
    单链表的两种构造函数
    使用malloc函数或new运算符为链表结点分配内存空间
    基于Vue全家桶开发的前端组件管理平台
    JS菱形镂空
    JS使用for循环实现九九乘法表数字颜色不同
    JS——个人所得税
    JAVA常见关键字
  • 原文地址:https://www.cnblogs.com/bjlhx/p/14255202.html
Copyright © 2020-2023  润新知