我创建了2个Docker镜像。一个是tomcat,另一个是apache。 我可以让它们单独运行,但是我试图通过AJP将apache代理到tomcat
据我所知,2个正在运行的图像并不知道每个图像,但有没有办法将AJP端口链接到apache?
目前我得到以下内容:
[Thu Mar 17 15:49:43.373689 2016] [proxy:error] [pid 11:tid 140213099689728](111)连接被拒:AH00957:AJP:尝试连接到127.0.0.1:8009(localhost)失败 [Thu Mar 17 15:49:43.373836 2016] [proxy:error] [pid 11:tid 140213099689728] AH00959:ap_proxy_connect_backend禁用60个(localhost)的worker [Thu Mar 17 15:49:43.373852 2016] [proxy_ajp:error] [pid 11:tid 140213099689728] [client 192.168.5.1:34864] AH00896:无法连接到后端:localhost 192.168.5.1 - - [17 / Mar / 2016:15:49:43 +0000]" GET / HTTP / 1.1" 503 299
答案 0 :(得分:2)
使用docker,您可以通过多种方式执行此操作。最好的方法是设置docker bridge网络(假设您在同一主机上运行它们)。运行图像也称为容器。
要做到这一点,你必须做几件事:
创建桥接网络
" docker network创建my-net"
添加" - net = my-net"到两个容器的docker run命令
更新您的连接信息以使用容器名称作为主机名,而不是使用" localhost"或127.0.0.1。 (当您在同一个docker网络上运行容器时,docker会通过与其容器名称匹配的主机名进行访问,从而可以访问它。
编辑:
如果您运行的是1.9之前的版本,则必须使用"链接"命令:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/
或者您可以使用--net = host运行这两个容器,这样可以通过localhost让它们相互访问。 (问题是你丢失了容器的封装,它基本上打开了该容器的所有端口到主机。