Docker容器通信主要分为以下几类:
- 容器和主机通信
- 同一主机上两个容器的通信
- 跨主机的两个容器的通信
首先,当Dokcer安装完成后,它会在主机安装一块虚拟网卡docker0
,使用命令
ifconfig
查看网卡
所以本机所有的容器都是在172.17.0.1
网段下,这个很重要,可以理解为是主机在容器局域网的IP地址。
整个Docker网络通信机制如上图所示,当容器创建时,Docker会随机分配该网段下的一个IP地址。
容器与主机通信
显然,容器与主机通信不能通过localhost:127.0.0.1
网址,而应该是docker0:172.17.0.1
。
同一主机上两个容器的通信
可以使用该网段下分配的IP地址进行通信,但这是静态的,当容器重新创建后,IP地址也会发生变化。因此可以采用bridge
模式,通过容器名进行通信。这种方式请自行查阅资料。