当构建分布式应用程序时,组成它的各个服务需要能够互相通讯。这些在容器中运行的服务,可能会运行在一台主机或多台主机上,甚至是跨数据中心的不同主机上。因此容器网络是任何基于Docker分布式应用程序需要考虑的关键因素。
用到容器的网络技术与用于虚拟机的网络技术非常类似。在同一主机上的容器可以连接到软件交换机上,iptables可以用来控制容器之间的网络流量,并将在容器中运行的进程的端口暴露到宿主机上。
容器的网络和虚拟机很类似,但它们有一个主要的区别。在容器中,你可以选择使用哪一个网络协议栈。比如你可以让容器和宿主机共享网络协议,这样你的容器就可以拥有和宿主机一样的IP地址。当然,你也可以让多个容器共享同一个网络协议栈。有多种网络模式可供选择,为了探索所有的可能性,有一个东西叫Pipwork。花一点点时间学习一下Pipwork,了解它的功能会大大加深你对容器的理解。
