docker(7) : docker 网络进阶知识点。

1、 Docker服务端启动的时候会在主机上创建一个docker0的虚拟网桥,实际上就是一个Linux网桥,可理解为一个软件交换机,它会在挂载其上的接口之间进行转发,如下图所示,与此同时Docker随机分配一个本地未占用的私有网段中的一个地址给docker0接口。比如典型的172.17.42.1,掩码为255.255.0.0。此后启动的容器内的网口也会自动分配一个同一个网段(172.17.0.0/16)的地址。当创建一个容器的时候会创建一对veth pair 接口(当数据包发送到一个接口的时候,另一个接口也可以收到相同是数据包)。这对接口一端在容器内即eth0;另一端在本地并被挂载到docker0网桥上,名称以veth开头(例如veth123),如下图:
在这里插入图片描述

 2、Docker服务端启动的时候网络相关命令参数,其中有的参数只能在Docker服务端启动后才能配置,且不能立马生效。命令详细如下:
                    -- bridge=bridgeName or -b bridgeName  #指定后面启动容器时候挂载的网桥 如docker0网桥。
                    --bip=CIDR                                                #定制docker0的掩码。
                    -H SOCKET...  or --host=SOCKET...          # 指定Docker服务端接受命令通道。
                    --icc=true|false                                          #配置后面启动的容器之间是否支持通信。
                    --ip-forward=true|false                              #配置是否启用net.ipv4.ip_forward,即是否打开转发功能。
                    --iptables=true|false                                  #配置是否允许Docker添加iptables规则。
                    
           下面2个命令选项既可以在启动Docker服务端的时候使用,也可以在启动容器(docker run)的时候指定,在启动Docker服务端的时候
             指定则会成为默认值,后续docker run 的时候可以覆盖设置的默认值,命令选项详细如下:
                --dns=IP_ADDRESS...                              #指定使用DNS服务器。
                --dns-serach=DOMAIN...                          #指定DNS搜索域。
                
            下面这些选项只能在docker run 命令执行的时候使用,如下:
                -h hostname or --hostname=hostname     #配置容器主机名。
                --link=container_name:alias                       #添加到另外一个容器的连接。
                --net=bridge | none | container:containerName_or_containerId | host | user_defined_network         #配置容器的桥接模式。
                
              详细说明 --net的五种模式
                     --net=bridge         #默认配置,为容器创建独立的网络命名空间,分配网卡、IP地址等网络配置,并通过veth接口对 将容器挂载到
                                                  虚拟网桥(默认为docker0)上。
                     --net=none          #为容器创建独立的网络命名空间,但是不进行网络配置,即容器内没有创建网卡、IP地址等。                   
                     --net=container:containerName_or_containerId        #意味着新创建的容器共享指定的已存在容器的网络命名空间,两个容器内的
                                                                                                          网络配置共享,但其他资源(进程空间、文件系统等)还是相互隔离的。
                     --net=host              #意味着不为容器创建独立的网络命名空间,容器内看到的网络配置(网卡信息、路由表、Iptables规则等)均与
                                                   主机上保持一致。注意其他资源还是与主机隔离的。
                     --net=user_defined_network   #用户自行定义的网络。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值