我试图设置一个nginx-proxy容器来通过端口80而不是特殊端口上的子域访问我的其他容器。如您所料,我无法正常工作。
我对Docker本身是新手,发现对我来说编写docker-compose.yml文件更舒服,因此我不必不断地编写长docker run ...命令。我认为使用docker或启动容器的方式没有区别docker- compose。但是,我注意到的一个区别是,使用容器启动docker不会创建任何新的网络,但是之后docker- compose将创建一个xxx_default网络。
docker-compose.yml
docker run ...
docker
docker- compose
xxx_default
我读到不同网络上的容器无法相互访问,这可能是nginx-proxy无法将请求转发到其他容器的原因。但是,我无法找到一种方法来配置我的docker- compose.yml文件以不创建任何新网络,而是像docker run那样加入默认桥网络。
docker- compose.yml
docker run
我尝试了以下操作,但是导致出现错误,提示我无法加入这样的系统网络:
networks: default: external: name: bridge
我也尝试过network_mode: bridge,但这似乎没有任何区别。
network_mode: bridge
我该如何写docker-compose.yml文件才能不创建新网络,或者根本不可能呢?
额外的问题:docker和docker-compose我应该知道之间还有其他区别吗?
docker-compose
添加network_mode: bridge到您的每个服务docker-compose.yml中将停止创建网络。
如果未使用此网桥(或主机)配置任何服务,则将创建网络。
经过测试并确认:
version: "2.1" services: app: image: ubuntu:latest network_mode: bridge