学习优先级:★★★★☆

易用性:★★★☆☆

容器之间的通信可以通过使用 DNS(域名系统)大大简化。每个容器服务都有一个唯一的名称,可以用来发起请求,而无需使用可能会变化的 IP 地址。

以下是一个示例,展示了如何让两个容器相互通信。

示例代码

version: '3'

services:
  web:
    image: nginx
    ports:
      - "80:80"

  app:
    image: my_app_image
    depends_on:
      - web
    environment:
      - WEB_URL=http://web

执行结果

运行此配置后,app 容器可以通过 URL http://web 访问 web 容器。

在这个示例中,我们定义了两个服务:web 和 app。web 容器运行一个 Nginx 服务器,而 app 容器访问 web 容器。通过使用服务名称(web)而不是 IP 地址,app 容器可以独立于 web 容器的 IP 地址访问它,即使 IP 地址发生变化。

补充说明

DNS 解析的一个优势是它简化了网络配置的管理,并使微服务之间的通信更加灵活。容器可以自动在网络中注册和解析其名称。这减少了对 IP 地址的依赖,提高了系统的可维护性和可扩展性。