【发布时间】:2017-09-30 22:24:52
【问题描述】:
我尝试设置一个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 之间是否还有其他我应该知道的区别?
【问题讨论】:
-
v1 format 撰写文件不会创建新网络,但需要设置
links才能与默认桥上的其他容器通信。 -
v1 即将被弃用,应避免使用。
-
是的,我使用的是版本 2 格式。感谢您的提示。
-
我刚刚将该语法用于版本 3,它工作得很好。我没有使用默认桥,而是另一个由包含 nginx 的 docker-compose.yml 创建的桥。剩下的问题是 iit 中带有下划线的主机名
标签: docker docker-compose jwilder-nginx-proxy