LOADING

Follow me

Docker学习系列 – 网络【zoues.com】
一月 19, 2017|DockerPaaS

Docker学习系列 – 网络【zoues.com】

Docker学习系列 – 网络【zoues.com】

为了管理容器网络,Docker提供了两种方案,一种是网桥(Bridge)方式,一种是中继(Overlay)方式。网桥方式只能在一个单一的主机上工作,中继是更高级的方式可以跨多个主机工作。另外,除了Docker原生的网桥和中继方式外,Docker也提供客户化方案,允许用户自己开发网络插件,当然这是更加高级的话题,需要更多的知识。本文先主要介绍网桥的工作情况,主要包含网络信息查看、网桥管理、容器连接网桥几个部分。

1. 网络信息查看

直接在命令终端输入docker network ls会列示出如下样式的三个网络信息:

其中比较重要的bridge这个网络信息,它是容器默认使用的网络,每次执行docker run开户一个新的容器实例时,Docker会使用这个网络给窗口分配IP地址。通过docker network inspect命令,可以查看此网络的详细信息,下面的截图包含的网桥信息的大部分内容,里面有它的Driver、网段字网、网关等详细信息:

2. 网桥管理

实际场景中,可能需要运行很多的容器,每类容器又解决不同的业务问题,可以将同类的容器放在一个网络段中,不同类的业务可能就需要多个网段了。Docker允许用户自己创建更多的网络,以满足复杂的实际业务环境。如下图示就创建了一个新的名字为my_bridge的网络:

命令“docker network create -d bridge my_bridge”中的-d参数用于指定网络类型,若不指定此参数默认也是bridge类型。

一个创建好的网桥,若不再需要,则可通过docker network rm命令将其移除。

3. 容器连接网桥

容器连接网桥有两种方式,一是在运行容器时指定–net参数,一是容器运行成功后可以通过docker network connect命令。下面我们做如下试验以深入理解。

  • 通过docker run -d -P –name web nginx开启一个nginx实例,默认情况它使用了bridge网络,详细情况可以通过docker inspect web命令查看到它的详情,如下可以看到它的网络名是bridge,IP地址为:172.17.0.2

  • 执行docker run -d -P –name web2 –net my_bridge nginx,再查看web2的网络详情时,可以看它的网络名为

  • 通过docker exec -it web bash进入到web的shell终端,执行ping 172.18.0.2,也就ping web2,会发现网络是不通的。这个原因是两个网络之间,默认是不能够通讯的。

  • 执行docker network connect my_bridge web会将web也添加到网络my_bridge中,这时再查看web的详细信息,会看到它有两个网络、两个IP地址,相当于物理机上面安装了两个网卡。

  • 接着,再在web容器里ping 172.18.0.2时,发现两个容器就可以通讯了。

以上是本文对容器的网络进行了一个简单介绍,看到此并同时动手实践的话,相信大家对于容器的bridge网络,将容器添加到网络等有了一个基本的了解。

no comments
Share

发表评论