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

noo*_*one 29 docker docker-compose jwilder-nginx-proxy

我尝试设置一个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
Run Code Online (Sandbox Code Playgroud)

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

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

奖金问题:我应该知道docker和之间是否存在其他差异docker-compose

Raw*_*ode 63

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

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

经测试并确认:

version: "2.1"

services:
  app:
    image: ubuntu:latest
    network_mode: bridge
Run Code Online (Sandbox Code Playgroud)

  • 我忘了在这里报告......实际上是问题所在.:) (3认同)
  • 这打破了发现。因此,如果您有> 1个需要互相交谈的容器,那么它将无法正常工作。 (2认同)
  • @JohnEikenberry虽然它可以使发现变得棘手,但它不会破坏它。用户仍然可以在compose中使用`links'语法。 (2认同)