Docker搭建开发环境用的非常多,通常开发机器上既有容器形式的应用,又有本机跑着或者调试的程序,它们之间互相依赖,如何让它们之间通信顺畅,有时候是一个挺困难的事情。容器应用和容器外应用互相访问分为三种情况:
- 容器内应用和容器内应用
- 容器内应用访问容器外应用
- 容器外应用访问容器内应用
而根据两个互相通信的容器或应用在不在一台服务器上,我们又多出一个维度的情况:
- 容器或应用在一台服务器
- 容器或应用不在一台服务器
要想彻底搞清楚互相访问的问题,就需要先弄清楚docker的网络是怎么一回事。为什么网络重要,这么说吧,docker三巨头:服务(容器)、网络 & 存储,作为三巨头之一的网络,还是要多加重视的。

容器三巨头之一: 网络
常用的docker网络模式有三种:bridge、host 和 overlay,可能会有人说,“谁说的?还有macVlan和none 好吧 ?” ,注意,我说的是常用 ?,三种模式各有适用场景:
- bridge,应用都是容器形式,且都在一个宿主机上,各个容器需要互相通信的场景;
- host,容器和本机应用混杂且需要相互访问的情况;
- overlay,在不同宿主机的容器之间需要互相通信的情景。
Bridge网络
分为“default bridge”和“user-defined bridge”(自定义b