Docker 网络

作者: 段永平 | 来源:发表于2019-08-25 15:19 被阅读0次

    Docker允许通过外部访问容器或容器互联的方式来提供网络服务。

    安装Docker时,会自动安装一块Docker网卡称为docker0,用于Docker各容器及宿主机的网络通信,网段为172.0.0.1。

    Docker网络中有三个核心概念:沙盒(Sandbox)、网络(Network)、端点(Endpoint)。

    沙盒,提供了容器的虚拟网络栈,也即端口套接字、IP路由表、防火墙等内容。隔离容器网络与宿主机网络,形成了完全独立的容器网络环境。

    网络,可以理解为Docker内部的虚拟子网,网络内的参与者相互可见并能够进行通讯。Docker的虚拟网络和宿主机网络是存在隔离关系的,其目的主要是形成容器间的安全通讯环境。

    端点,位于容器或网络隔离墙之上的洞,主要目的是形成一个可以控制的突破封闭的网络环境的出入口。当容器的端点与网络的端点形成配对后,就如同在这两者之间搭建了桥梁,便能够进行数据传输了。

    Docker的四种网络模式

    Docker服务在启动的时候会创建三种网络,bridge、host和none,还有一种共享容器的模式container。

    Bridge

    桥接模式,主要用来对外通信的,docker容器默认的网络使用的就是bridge。使用bridge模式配置容器自定义的网络配置。

    # 配置容器的主机名

    docker run --name t1 --network bridge -h [自定义主机名] -it --rm busybox

    # 自定义DNS

    docker run --name t1 --network bridge --dns 114.114 -it --rm busybox

    # 给host文件添加一条

    docker run --name t1 --network bridge --add-host [hostname]:[ip] -it --rm busybox

    Host

    host类型的网络就是主机网络的意思,绑定到这种网络上面的容器,内部使用的端口直接绑定在主机上对应的端口,而如果容器服务没有使用端口,则无影响。

    None

    从某种意义上来说,none应该算不上网络了,因为它不使用任何网络,会形成一个封闭网络的容器

    container

    共享另外一个容器的network namespace,和host模式差不多,只是这里不是使用宿主机网络,而是使用的容器网络

    自定义docker0桥的网络属性信息

    /etc/docker/daemon.json文件

    {

    "bip": "192.168.5.5/16",

    "fixed-cidr": "10.20.0.0/16",

    "fixed-cidr-v6": "2001:db8::/64",

    "mtu": 1500,

    "default-gateway": "10.20.1.1",

    "default-gateway-v6": "2001:db8:abcd::89",

    "dns": ["10.20.1.2","10.20.1.3"]

    }

    核心选项为bip,即bridge ip之意,用于指定docker0桥自身的IP地址;其它选项可通过此地址计算得出创建自定义的桥网络

    docker network create -d bridge --subnet "172.26.0.0/16" --gateway "172.26.0.1" mybr0

    相关文章

      网友评论

        本文标题:Docker 网络

        本文链接:https://www.haomeiwen.com/subject/qunhectx.html