Apache httpd 在 运行 docker 图像时表现不正常
Apache httpd not behaving properly when running docker image
环境:
- Docker version 1.6.2, build ba1f6c3/1.6.2
- Centos 7
- apache httpd 2.4.6
我已经创建了 apache httpd 的 docker 映像。里面有一个简单的 shell 脚本可以启动 httpd 服务器。
我的开始-httpd.sh
httpd -k start
#to keep process running
tail -f /dev/null
现在我复制到 docker 图像的配置与我 运行 在我的主主机上的配置相似。
负载均衡器的示例配置:
<VirtualHost localhost:8000>
ServerName localhost
ProxyRequests off
ProxyPreserveHost on
ErrorLog logs/error_domain.log
SetHandler balancer-manager
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order allow,deny
Allow from all
</Location>
<Proxy balancer://idp>
BalancerMember http://punvm-core05.sigmasys.net:9091
BalancerMember http://punvm-core06.sigmasys.net:8091 status=+H
#ProxySet lbmethod=byrequests
ProxySet lbmethod=bytraffic
</Proxy>
ProxyPass /homepage balancer://idp
ProxyPassReverse /homepage balancer://idp
ProxyPass /assets balancer://idp/assets
ProxyPassReverse /assets balancer://idp/assets
ProxyPass /saml-idp balancer://idp/saml-idp
ProxyPassReverse /saml-idp balancer://idp/saml-idp
</VirtualHost>
现在这就是我 运行 docker 图片的方式,
docker run -d -p 10000:8000 auth/loadbalancer /home/start-httpd.sh
我可以访问 http://localhost:10000 但我期望的页面不同
附上预期和意外的 httpd 服务器页面的快照
预期图像,这是来自我的主机:
访问映射到 docker 内端口的 apache 时出现意外图像,如上述 docker
命令中所述
此外,当我登录到容器并执行 curl 命令时,作为响应,我可以看到负载均衡器页面,但从容器外部我看到了意外图像的响应。
请说明为什么会这样,我是不是遗漏了什么。
我可以解决这个问题。
我不得不 运行 这样命令,
docker run -d --net=host auth/loadbalancer /home/start-httpd.sh
所以我在这里不需要任何端口映射,所有的翻译内部容器都是在使用它时自动完成的。
环境:
- Docker version 1.6.2, build ba1f6c3/1.6.2
- Centos 7
- apache httpd 2.4.6
我已经创建了 apache httpd 的 docker 映像。里面有一个简单的 shell 脚本可以启动 httpd 服务器。 我的开始-httpd.sh
httpd -k start
#to keep process running
tail -f /dev/null
现在我复制到 docker 图像的配置与我 运行 在我的主主机上的配置相似。
负载均衡器的示例配置:
<VirtualHost localhost:8000>
ServerName localhost
ProxyRequests off
ProxyPreserveHost on
ErrorLog logs/error_domain.log
SetHandler balancer-manager
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order allow,deny
Allow from all
</Location>
<Proxy balancer://idp>
BalancerMember http://punvm-core05.sigmasys.net:9091
BalancerMember http://punvm-core06.sigmasys.net:8091 status=+H
#ProxySet lbmethod=byrequests
ProxySet lbmethod=bytraffic
</Proxy>
ProxyPass /homepage balancer://idp
ProxyPassReverse /homepage balancer://idp
ProxyPass /assets balancer://idp/assets
ProxyPassReverse /assets balancer://idp/assets
ProxyPass /saml-idp balancer://idp/saml-idp
ProxyPassReverse /saml-idp balancer://idp/saml-idp
</VirtualHost>
现在这就是我 运行 docker 图片的方式,
docker run -d -p 10000:8000 auth/loadbalancer /home/start-httpd.sh
我可以访问 http://localhost:10000 但我期望的页面不同
附上预期和意外的 httpd 服务器页面的快照
预期图像,这是来自我的主机:
访问映射到 docker 内端口的 apache 时出现意外图像,如上述 docker
命令中所述此外,当我登录到容器并执行 curl 命令时,作为响应,我可以看到负载均衡器页面,但从容器外部我看到了意外图像的响应。
请说明为什么会这样,我是不是遗漏了什么。
我可以解决这个问题。 我不得不 运行 这样命令,
docker run -d --net=host auth/loadbalancer /home/start-httpd.sh
所以我在这里不需要任何端口映射,所有的翻译内部容器都是在使用它时自动完成的。