我如何通过 AJP Link Apache 和 Tomcat 容器?

How Can I Link a Apache and Tomcat Containers Over AJP?

我创建了 2 张 Docker 图片。一个是 tomcat,另一个是 apache。 我可以让它们单独到达 运行,但我试图通过 AJP

将 apache 代理到 tomcat

我知道 2 运行ning 图像不知道每个图像,但是有什么方法可以 link AJP 端口到 apache 吗?

目前我得到以下信息:

[Thu Mar 17 15:49:43.373689 2016] [proxy:error] [pid 11:tid 140213099689728] (111)Connection refused: AH00957: AJP: attempt to connect to 127.0.0.1:8009 (localhost) failed [Thu Mar 17 15:49:43.373836 2016] [proxy:error] [pid 11:tid 140213099689728] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 60s [Thu Mar 17 15:49:43.373852 2016] [proxy_ajp:error] [pid 11:tid 140213099689728] [client 192.168.5.1:34864] AH00896: failed to make connection to backend: localhost 192.168.5.1 - - [17/Mar/2016:15:49:43 +0000] "GET / HTTP/1.1" 503 299

使用 docker,您有多种方法可以做到这一点。最好的方法是设置一个 docker 桥接网络(假设您 运行 将它们连接到同一台主机上)。 运行ning 图像也称为容器。

为此你必须做几件事:

  1. 创建桥接网络

    "docker network create my-net"

  2. 将“--net=my-net”添加到两个容器的 docker 运行 命令中

  3. 更新您的连接信息以使用容器名称作为主机名,而不是使用 "localhost" 或 127.0.0.1。 (当你 运行 容器在同一个 docker 网络上时,docker 做了一些 DNS 魔法,它使它们可以通过与容器名称匹配的主机名访问。

编辑:

如果您运行正在使用 1.9 之前的版本,则必须使用 "link" 命令:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

或者您可以 运行 两个容器都使用 --net=host ,这样它们就可以通过本地主机相互访问。 (这个问题是你失去了容器的封装,它基本上打开了那个容器的所有端口到主机。