知识卡片
容器网络的两个独立问题
内容
容器默认加入一个和外界隔离的网络,这带来两个性质不同、要分开解决的连通性问题:一是”外部世界怎么访问容器里的服务”——靠端口映射(-p 宿主机端口:容器端口)把容器内部端口转发到宿主机上;二是”容器和容器之间怎么互相访问”——不能用 localhost(那指的是各自容器内部),而是靠 Docker 内置的 DNS 服务器,让同一个网络里的容器可以直接用容器名当主机名互相找到对方,不需要写死 IP。发散:这两个问题分别对应”南北向流量”(外部到内部)和”东西向流量”(内部到内部)——很多人只想到要开端口映射解决第一个问题,却忘了容器间通信压根不需要经过宿主机端口,直接用容器名走内部网络反而更简单也更安全,因为它不需要向宿主机之外暴露任何东西。
参考来源
《Cloud Native Spring in Action》第6章《Containerizing Spring Boot》