我目前有大约5个have服务器运行在反向代理后面。我想使用外部AD通过ldap协议对我的用户进行身份验证。docker-engine能够单独区分每个容器吗?
我目前的理解是,如果没有容器化的目录服务,或者没有为每个容器公开不同的端口,这是不可能的,但我对此表示怀疑。如果我从我容器中ping一个外部服务器,我能够在相同的容器中得到回复,而不会出现问题。回复是如何到达正确的容器的?我很难理解它对于任何其他协议是如何不同的,但同时需要一个反向代理来为多个for服务器的内容提供服务。如果有人能帮我说清楚一点,我将不胜感激。
发布于 2021-07-30 13:29:23
经过更深的挖掘,我找到了我想要的东西。
通过iptables使用IP伪装(类似于NAT),默认网络上的docker会自动路由任何源自容器的流量。它的工作方式是,来自容器的数据包将被剥离容器IP地址,并替换为主机ip地址。原始ip地址将一直保留到tcp会话结束。然后,流量将到达目的地,并且任何回复都将发送回主机。应答数据包将被剥离主机ip并发送到适当的容器。这就是为什么您可以从一个容器ping另一个服务器,并在同一个容器中获得回复。
但显然,它不适用于传入with服务器的流量,因为第一步是客户端启动与with服务器的会话。这就是为什么需要反向代理的原因。
我可能遗漏了一些东西,也可能对其他一些东西有误解,但这是大体的想法。
TLDR:输出流量(和任何回复)将由docker自动路由,您必须使用反向代理将传入流量路由到多个容器。
https://stackoverflow.com/questions/68577461
复制相似问题