首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当更改网络时,docker反向代理无法工作(by -net)

当更改网络时,docker反向代理无法工作(by -net)
EN

Stack Overflow用户
提问于 2017-06-23 20:20:33
回答 1查看 225关注 0票数 0

码头版本:17.05.0-行政长官

我使用docker-compose.yml手动运行了一些容器,但最近在新项目中,我创建了基于本教程本教程文件。但是,当我在宿主中运行以下命令时:

代码语言:javascript
复制
docker network create --driver bridge reverse-proxy
docker-compose up 

代码语言:javascript
复制
docker run -d --name nginx-reverse-proxy --net reverse-proxy  -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy

代理不适用于旧容器,我无法使用该项目的子域(它们“停止工作”)。

那该怎么办呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-23 20:20:33

--net参数在docker run ...中进行了实验,并使用docker network inspect network_name进行了实验。我得到了许多不同的结果,如欢迎来到nginxhttp 404 not http 503暂时不可用,并得出以下结论:

  1. 如果没有--net命令,则容器在桥网络中运行。
  2. 如果--net xxx命令只在'xxx‘网络中运行(而不是在桥中!)
  3. 如果--net xxx --net yyy,那么容器只在'yyy‘中运行(根本没有'xxx’!)

桥接是集装箱间通信的默认码头网络.

因此,在运行代理时,我们只使用--net reverse-proxy,然后使用代理容器,看不到桥,无法与其他容器通信。如果我们尝试使用--net reverse-proxy --net bridge (在类似于一行的-p中使用两次或更多次),那么容器将只连接到最后一个网络。

所以解决办法是..。以下列方式运行代理:

代码语言:javascript
复制
docker run -d --name nginx-reverse-proxy  -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
docker network connect reverse-proxy reverse-proxy

正如您所看到的,我们根本没有使用--net命令。network connect命令允许容器连接使用多个网络。当您执行docker network inspect reverse-proxydocker network inspect bridge时,我们将看到nginx-反向代理在两个网络中:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44729386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档