一尘不染

如何使用docker-compose v2加入默认网桥网络?

docker

我试图设置一个nginx-proxy容器来通过端口80而不是特殊端口上的子域访问我的其他容器。如您所料,我无法正常工作。

我对Docker本身是新手,发现对我来说编写docker-compose.yml文件更舒服,因此我不必不断地编写长docker run ...命令。我认为使用docker或启动容器的方式没有区别docker- compose。但是,我注意到的一个区别是,使用容器启动docker不会创建任何新的网络,但是之后docker- compose将创建一个xxx_default网络。

我读到不同网络上的容器无法相互访问,这可能是nginx-proxy无法将请求转发到其他容器的原因。但是,我无法找到一种方法来配置我的docker- compose.yml文件以不创建任何新网络,而是像docker run那样加入默认桥网络。

我尝试了以下操作,但是导致出现错误,提示我无法加入这样的系统网络:

networks:
  default:
    external:
      name: bridge

我也尝试过network_mode: bridge,但这似乎没有任何区别。

我该如何写docker-compose.yml文件才能不创建新网络,或者根本不可能呢?

额外的问题:dockerdocker-compose我应该知道之间还有其他区别吗?


阅读 1883

收藏
2020-06-17

共1个答案

一尘不染

添加network_mode: bridge到您的每个服务docker-compose.yml中将停止创建网络。

如果未使用此网桥(或主机)配置任何服务,则将创建网络。

经过测试并确认:

version: "2.1"

services:
  app:
    image: ubuntu:latest
    network_mode: bridge
2020-06-17