docker的bridge网络

在网络方面,桥网是一种链路层设备,它能够在网络段之间传输流量。 桥能够是硬件设备,也能够是在主机前端

内核中运行的软件设备。 就Docker而言,桥网使用的是一个软件桥,它容许链接到同一桥网的容器进行通讯,同时提供与不链接到桥网的容器隔离。 Docker桥驱动程序自动地在主机上安装规则,因此不一样的桥接网络上的容器不能直接通讯。web

桥接网络适用于运行在相同的Docker守护进程主机上的容器。 对于运行在不一样的Docker守护进程主机上的容器之间的通讯,您能够在OS级别管理路由,也可使用覆盖网络。 当你开始Docker时,一个默认的桥网络(也称为 bridge )是自动建立的,新启动的容器链接到它,除非有其余指定。 您还能够建立用户定义的自定义桥网络。 用户定义的桥接网络优于默认的桥接网络。docker

用户定义的桥和默认桥之间的区别

  • 用户定义的桥在容器化的应用程序之间提供更好的隔离和互操做性

链接到相同用户定义的桥接网络的容器会自动地将全部端口暴露在一块儿,而对外部世界没有端口。 这使得容器应用程序能够轻松地进行通讯,而不会意外地打开外部世界的访问。数据库

假设有一个具备web前端和数据库后端的应用程序。 外部世界须要访问web前端(可能在端口80上),但只有前端自己须要访问数据库主机和端口。 使用用户定义的桥,只须要打开web端口,而数据库应用程序不须要打开任何端口,由于web前端能够经过用户定义的桥到达它。后端

若是您在默认的桥接网络上运行相同的应用程序堆栈,则须要使用 -p--publish 为每一个应用程序堆栈打开web端口和数据库端口。网络

  • 用户定义的桥梁在容器之间提供自动DNS解析

默认桥接网络上的容器只能经过IP地址访问,除非您使用 --link 选项,它被认为是legacy。 在用户定义的桥接网络中,容器能够经过名称或别名彼此解析。spa

想象一下与前一个点相同的应用程序,有一个web前端和一个数据库后端。 若是您调用您的容器web和db,那么web容器能够在db上链接到db容器,无论哪一个Docker主机正在运行应用程序堆栈。调试

若是您在默认的桥接网络上运行相同的应用程序堆栈,您须要手动建立容器之间的连接(使用legacy -link)标志。 这些连接须要在两个方向上建立,所以您能够看到,两个以上的容器须要进行通讯时,这一过程变得复杂。 或者,您能够在容器中操做 /etc/hosts 文件,可是这会形成难以调试的问题。code

  • 能够将容器链接起来,并从用户定义的网络上分离

在容器的生命周期中,您能够动态地链接或断开用户定义的网络。 要从默认的桥接网络中删除一个容器,您须要中止容器并使用不一样的网络选项从新建立它。生命周期

相关文章
相关标签/搜索