在docker容器中运行的Apache代理可以';无法访问本地主机

在docker容器中运行的Apache代理可以';无法访问本地主机,docker,Docker,我想实现什么->我想通过docker容器使用本地运行的应用程序 我创建了一个运行在docker容器中的apache代理。 代理(docker容器)->本地主机应用程序(在物理主机上) 当我将浏览器指向docker_ip:8001时,apache实例正在运行,但它不能代理主机localhost 配置如下: <Location /test/auth> SSLRequireSSL SSLVerifyClient optional SSLVerifyDepth 3

我想实现什么->我想通过docker容器使用本地运行的应用程序

我创建了一个运行在docker容器中的apache代理。 代理(docker容器)->本地主机应用程序(在物理主机上)

当我将浏览器指向docker_ip:8001时,apache实例正在运行,但它不能代理主机localhost

配置如下:

<Location /test/auth>
    SSLRequireSSL
    SSLVerifyClient optional
    SSLVerifyDepth 3
    SSLOptions +ExportCertData +StdEnvVars

    RewriteEngine on
    RewriteCond %{SSL:SSL_CLIENT_VERIFY} !^SUCCESS$
    RewriteRule .* /test/fail [L]
</Location>

RequestHeader set HTTPS "%{HTTPS}s" env=HTTPS
...


ProxyPass               /test   http://host:8080/test retry=0
ProxyPassReverse        /test       http://host:8080/test
现在针对主机的ping和wget工作得很好,它收到了我在主机上运行的apache的响应。如何用localhost替换192.168.xxx.xxx


*注意:使用win7,但这并不重要?

它实际上需要是
localhost
而不是主机IP吗?这永远不会起作用,因为Docker在Windows上作为虚拟机运行。
localhost
将是容器。然后,即使您在桥接或主机模式网络中运行,
localhost
将只是虚拟机。两者都不是真正的Windows主机。最好是这样工作。我要解决的问题是,在CI和live环境中,我们有一个用于身份验证逻辑和应用聚合的apache代理。为了获得开发环境的相同逻辑,我认为定义一个每个开发人员都可以在其机器上运行的docker容器是合理的。我可以使用hosts IP,但是它必须为每种类型的服务器分别配置,这增加了不必要的复杂性。也许docker不是解决此类问题的好方法,或者我用错了。一般来说,两者都将作为容器运行并共享一个“docker网络”,所以这不会是一个问题。但是,主机本身也有一个用于Docker的NAT网关,通常为172.17.42.1。您可以尝试将其作为默认设置。接下来,您可能可以使用envsubt或confd之类的东西对该配置进行模板化,并拥有一个可以更改的默认环境变量。然后,在启动容器时,如果主机IP恰好不同,您可以设置
-e host\u IP=
或类似设置。不过,这可能是一个单独的问题。
docker run --add-host=host:192.168.xxx.xxx -p 8001:443 -it docker-test bash