我有一个运行Caddy的Docker容器和另一个Web服务器。
在我的
Dockerfile
我有
EXPOSE 80 10240 # 10240 is the port of the other webserver.
我这样管理Docker(别问我为什么你需要
EXPOSE
和
-p
)
docker run -p 80:80 -p 10240:1024 -it <hash>
这将启动两个服务器。在我的主机上(这是一个mac btw),我可以连接到
localhost:10240
好的。但是如果我连接到
localhost:80
,收到空响应(断开连接)。
Docker容器中的netstat显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10240 0.0.0.0:* LISTEN 19/node
tcp6 0 0 :::80 :::* LISTEN 9/caddy
这就是它开始变得奇怪的地方。如果我
curl -L localhost
在内部
Docker容器,它工作正常-我从10240服务器获取网页。
如果我
curl -L 127.0.0.1
从Docker容器中返回
404 Site 127.0.0.1 is not served on this interface
. 好的。
如果我
卷曲-L 127.0.0.1
从
外部
集装箱它
也
收益率
404站点127.0.0.1未在此接口上提供服务
. 所以我的要求
是
通过,但是球童掉下来了
localhost
请求来自容器外部,而不是容器内部。我已经启用了日志记录,但它什么也不打印。
有人能告诉我到底发生了什么事吗?所有这些码头港口转运的东西都是荒谬的。
这是我的CADDYFILE(我已经尝试了大约10亿种
本地服务器
,
127.0.0.1
等):
localhost:80
bind 0.0.0.0
proxy / 127.0.0.1:10240