暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker网络介绍

运维实习生 2019-04-08
1395

        docker三大难点,存储·网络·镜像

    今天我们来讲解一下docker的网络架构,每次在你安装完docker服务的时候,你的网络就会发生了新的变化,新添加了一个叫做docker0的网卡,这个网卡是干什么的呢?它是用来做容器网络的一个网桥,简单来说就是保证容器和外部通信用的。

    docker的网络有三种,bridge,host,none,我们从简单及难的过程进行简介。

    1.none网络,故名思意,none就是没有的意思,就是不需要网络,不去和外部进行通信,就好比一台电脑,没有网线也没有无线网卡,自己只能玩自己的,无法和外界联系。使用none网络一般用于测试镜像的环境,使用命令:docker run -d --net none nginx

    这就启动了一个nginx容器使用无网络环境

    2.host网络,主机网络,启动的容器直接使用docker的宿主机网络,和docker宿主机公用网络信息,使用这个网络了以后,你的宿主机是如何连接外网的这个容器就是如何连接外网的,(这里用到了namespace的机制,有点难,但很重要,你也可以理解为启动的镜像直接占用了docker服务进程,服务器有一个网卡,这个容器也有一个网卡,在host网络模式下,不要考虑docker服务。

    使用命令 docker run -d --net host nginx 

            none网络不可以新建,不可以删除,

        3.bridge桥接网络,在上文中我提到了docker0,但一直没有说,因为这算是个比较难的了,我先给个图,按着图更容易理解

容器的流量会这样出来,在D网卡进入C网卡这就进入docker0这个网桥,然后再B网卡进入A网卡,进入物理网卡,再经过外界路由器交换机 达到 ping 通百度的效果,外界流量进入容器这进入是这样的,先进入物理网卡,再去docker0网桥,然后进入容器,另外一个容器的流量也是这样,

        默认启动容器的网络都将是docker0网桥,不去添加参数就可以启动bridge网桥,也可以添加 --net bridge 使用。  docker0是一个网桥,它是可以创建删除的,docker0是默认的,不支持删除功能。docker添加


bridge网络命令如下:docker network create --subnet 192.168.100.0/24  --gateway 192.168.100.1 yumeng


这就创建了一个bridge网络,网段为192.168.100.0的24位网络,网关位192.168.100.1 网络的名字位yumeng

   由于namespace机制,创建后网络是这样的,如下图:

    

  4.link这个严格说不算docker的网络模式,它是为了便于容器间的通信而做的一种解决办法。有的容器在创建的时候没有ping命令,也没有ifconfig命令的,那么我需要这个容器和其他容器通信怎么办?安装?如果在一个没有连接外网,在一个局域网内怎么办呢?这时候就要使用link这个功能了。首先启动拥有ip的容器,给拥有ip的容器给一个名字,其次启动没有ifconfig的容器并使用link参数。

命令:先启动没有ping命令的nginx容器

docker run -itdP --name nginx nginx

其次启动带有ping命令的busybox容器

docker run -it --link nignx:nginx busybox


进入busybox容器去ping nginx ok没有问题。这就是link的功能




        docker的网络确实有点复杂,学习这块的时候需要静下心来慢慢搞不要着急。

文章转载自运维实习生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论