56

我尝试设置一个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文件才能不创建新网络,或者这根本不可能?

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

4

1 回答 1

105

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

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

测试并确认:

version: "2.1"

services:
  app:
    image: ubuntu:latest
    network_mode: bridge
于 2017-05-03T08:43:09.333 回答