我最近尝试容器化一个使用三个服务的应用程序。当使用 docker run 单独启动它们的容器时,我还需要将它们放在同一个网络中,否则它们无法通信。但我只是编写了一个 docker-compose.yaml 文件来同时运行它们,即使不指定其网络接口,它们也可以相互通信。这是为什么?
docker-compose 使用默认网络创建一个堆栈。
来自 docker-compose 文档: “默认情况下,Compose 会为您的应用程序设置一个网络。服务的每个容器都会加入默认网络,并且该网络上的其他容器都可以访问该网络,并且可以通过服务名称来发现。”
如果您想自定义,您需要在 docker-compose.yml 文件中使用网络指令。
希望这有帮助