学习优先级:★★★★★
易用性:★★★★☆
在 Docker Compose 中,每个服务可以运行在自己的隔离网络中。这提高了安全性,并允许更好地控制服务之间的通信流量。
以下是一个配置示例,展示了如何为每个服务定义特定的网络,以控制服务之间的通信并确保隔离。
示例代码
version: '3.8'
services:
web:
image: nginx
networks:
- frontend
database:
image: postgres
networks:
- backend
networks:
frontend:
driver: bridge # 为 Web 服务创建的网络
backend:
driver: bridge # 为数据库服务创建的网络
执行结果
运行此配置后,Web 服务将在 frontend 网络中启动,数据库服务将在 backend 网络中启动。由于它们在不同的网络中,因此无法直接相互通信,除非明确连接。
在 Docker Compose 中使用单独的网络可以创建清晰的网络隔离。这提高了安全性,因为运行在不同网络中的服务无法直接通信,除非明确允许。默认的网络驱动 bridge 为同一宿主机上的容器创建隔离网络。还可以使用更高级的网络配置,如 overlay 用于多宿主机网络或 macvlan 为容器分配独立的 MAC 地址。
补充说明
网络隔离在生产环境中尤其重要,因为某些服务(如数据库或内部 API)不应对外公开。使用 Docker Compose,可以配置多个网络,以清晰地分离内部和外部通信。