docker之高级网络配置

网络基础:
    docker0:
        docker 启动时,会在宿主机(HOST)上创建一个docker0的虚拟网桥(交换机)。本质上docker0是个birdge,主要提供container和宿主机之间的数据转发。

docker0的ip地址是docker在启动是分配的本地私有网段,常见的172.17.0.0/16。同时container中也会分配同网段的一个ip地址。

veth pair:
        当创建一个container时,同时也会创建一对veth端口。当向其中一个端口发送数据时,另一个端口也能收到相同的包。有点类似mirror。

其中一个端口在container中,一般是eth0。另一端 在宿主机中并被挂再到docker0上。名称以veth开头。

docker的网络结构:
            HOST <--> docker0(vethXXX) <--> container(eth0)

容器的DNS和HOSTMANE:
    容器在创建以后,会自动挂载宿主机上的以下文件:
        /etc/hostname
        /etc/hosts
        /etc/resolv.conf

这种挂载机制的优点在于宿主机一旦更新以下文件,容器也会自动更新内容,免去专门对容器内文件的编辑。

若手工指定可以使用以下选项:
        -h
        --link
        --dns
        --dns-search

注意:若run的时候没有指定--dns和--dns-search的时候,将使用宿主机的/etc/resolv.conf作为容器的默认配置。

容器的访问控制:
    容器访问外部网络:
        需要网卡的转发支持。
        #sysctl net.ipv4.ip_forward
        #sysctl -w net.ipv4.ip_forward=1

或者在docker服务启动时,指定--ip-forward=ture。docker会自动设定转发参数为1的。

容器之间的访问:
        1.容器是否连接到docker0
        2.iptables

访问所有端口:
            docker服务启动的时候时候,默认会添加一条转发策略到 iptables 的 FORWARD 链上,策略的默认值取决于--icc选项的值,--icc一般默认ture,则策略默认为ACCEPT。若指定了--iptables=false,则在服务启动时不会添加规则。

默认情况下是允许不同容器互相访问的。
            若要禁止互相访问可以修改docker的配置文件:
                #vim /etc/default/docker ubunt下的配置文件位置
                    DOCKER——OPTS=--icc=false

访问指定端口:
            即时--icc=false的情况下,使用--link选项仍然可以让虚拟机之间完成通信。本质上-icc=false实际上是在iptables中FORWARD添加了一条DROP。
            而--link也是在iptables中分别添加2个容器的相关策略。

容器的端口映射:
    默认情况下,容器是可以访问外部网络,但是外部是无法访问到容器的。
    端口映射本质上也是在iptables中nat添加规则。

容器访问外部:
        使用MASQUERADE而不直接使用SNAT。

外部访问容器:
        使用DNAT
        -p指定明确的端口和ip地址
        -P指定随机端口

网桥的配置:
    创建新容器的时候,会从可用地址中使用一个空闲ip作为容器的eth0地址,使用docker0作为所有容器的默认网关。

默认情况下使用docker0,当然也可以自己定义其他的网桥。

docker0的配置
        方法1:docker服务启动时使用以下选项,这会覆盖配置文件中的定义:
            --bip=IP/MASK 指定网桥的IP地址和掩码
            --mtu=BYTE 指定mtu的大小

方法2:修改配置文件:
            #vim /etc/default/docker
                DOCKER_OPTS="--bip=IP/MASK  --mtu=BYTE "

查看网桥:
        #brctl show

自定义网桥:
        1.创建新网桥:
            #brctl addbr brnew0
            #ip adr add IPADDR/MASK dev birdge
            #ip link set dev brnew0 up

2.删除旧网桥:
            #systemctl stop docker
            #ip link set dev docker0 donw
            #brctl delbr docker0

3.应用新网桥
            方法1:
                docker启动时,使用-b(--bridge)指定新网桥
            方法2:
                修改配置文件中DOCKER_OPTS的内容,并启动服务

时间: 2024-10-09 16:15:23

docker之高级网络配置的相关文章

docker的高级网络配置——映射和桥接

啦啦啦啦,我是卖报的小行家,大风大雨的满街跑

Docker 学习笔记【3】 Docker 仓库、数据卷、数据卷容器,网络基础实操。高级网络配置学习

Docker 学习笔记[4] 高级网络配置实操,实战案例实验 =========================================================================== Docker 学习笔记[2] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,记录开始 =========================================================================== 被格式化的脚本内容: #开头代表

Docker Network Configuration 高级网络配置

Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the host machine. It randomly chooses an address and subnet from the private range defined by RFC 1918 that are not in use on the host machine, and assign

linux 笔记 3-2.高级网络配置

**********2.高级网络配置***********目标:配置网络桥接配置 bond 网络接口配置 team 网络接口 ##1.配置网络桥接##网络桥接用网络桥实现共享上网主机和客户机除了利用软件外,还可以用系统自带的网络桥建立连接用双网卡的机器做主机 真机配置 vim /etc/sysconfig/network-scripts/ifcfg-westos   vim /etc/sysconfig/network-scripts/ifcfg-br0   先关掉NetworkManager服

docker系列之网络配置

docker 网络配置 docker 安装后, 会自动在系统做一个网桥配置 docker0 . 其容器都会分配到此网桥配置下的独立, 私有 IP 地址. 如果你要自己配置桥接, 也可以把 docker0 删除掉. docker run 的时候使用参数 -b 指定你自己配置的网桥. docker 容器的网络, 是相对于实体机的私有网络. 在网桥配置下, 只要知道 IP 地址, 各容器, 及实体机本身都可以自由通信. 但是在实体机的网卡网络下, docker 容器就不可见了. 要让容器被外界访问到,

高级网络配置

一.team链路聚合 1.team也是链路聚合的一种方式 最多支持8块网卡 支持模式: 广播 轮巡 主备 负载均衡 2.配置 ##配置team网卡 ##将eth0 eth1 网卡添加到team网卡中 1.测试: watch -n 1 teamdctl team0  stat   ##监控team链路聚合网卡命令 ifconfig  eth0  down ifconfig  eth0  up 二.网桥 1.删除掉以前的网络配置 vim /etc/sysconfig/network-service/

docker入门实战9 高级网络配置

本章介绍docker的一些关于网络的高级知识,包括网络的启动和配置参数.DNS的使用配置.容器访问和端口映射的相关实现. 20.1 网络启动与配置参数 1. 基本过程 docker启动时会在主机上自动创建一个docker0虚拟网桥,实际上是一个Linux网桥,可以理解为一个软件交换机.它会在挂载其上的接口之间进行转发. 同时docker随机分配一个本地未占用的私有网段中的一个地址给docker0接口.此后启动的容器内的网口也会自动分配一个同一网段的地址.包括IP和掩码. 当创建一个docker容

高级网络配置+Ipv6

#######team###### 1.team也是链路聚合的一种方式 1)Team 的种类 broadcast    广播容错 roundrobin    轮询 activebackup    主备 loadbalance    负载均衡 2)Team 接口 Team 和 bond0 功能类似 Team 不需要手动加载相应内核模块 Team 有更强的拓展性 – 支持 8 快网卡 2.利用 nmcli 命令管理 bond nmcli connection add con-name team0 i

高级网络配置——bond/team/桥接网络

一.学习配置 bond 网络接口 Red Hat Enterprise Linux 允许管理员使用bonding 内核模块和称为通道绑定接口的特殊网络接口将多个网络接口绑定到一个通道.根据选择的绑定模式 , 通道绑定使两个或更多个网络接口作为一个网络接口 , 从而增加带宽和 / 提供冗余性1.利用 nmcli 命令管理 bond     nm-connection-editor           删除所有网络接口     nmcli connection add type bond con-n