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

How to join the default bridge network with docker-compose v2?

我尝试设置一个 nginx-proxy 容器以通过端口 80 上的子域而不是特殊端口访问我的其他容器。正如您所猜到的,我无法让它工作。

我对 docker 本身有点陌生,发现编写 docker-compose.yml 文件对我来说更舒服,所以我不必经常编写长 docker run ... 命令.我认为使用 dockerdocker-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 之间还有其他我应该知道的区别吗?

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

如果任何服务没有配置此网桥(或主机),将创建一个网络。

测试并确认:

version: "2.1"

services:
  app:
    image: ubuntu:latest
    network_mode: bridge