我在centos docker容器中有一个正在运行的apache webserver,它由AWS redhat实例托管。
我能够在AWS实例本地主机中卷曲我的容器Web服务器,但无法在我的笔记本电脑Web浏览器中公开访问。
网络服务器的详细信息:
docker run -d --name httpd -p 8080:8080 -v /home/ec2-user/apache/web1/www:/var/www:Z docker.io/centos/httpd-24-centos7
docker ps
的输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abd790b28b51 docker.io/centos/httpd-24-centos7 "container-entrypo..." 2 hours ago Up 20 minutes 0.0.0.0:8080->8080/tcp, 8443/tcp httpd
在AWS实例中:
curl http://localhost:8080
你好,世界!!!
但无法使用我的笔记本电脑上的AWS主机公共IP在公共互联网上获取此信息。
netstat -tulpn
的输出:
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp 0 0 127.0.0.1:323 0.0.0.0:* -
udp6 0 0 ::1:323 :::* -
我的AWS安全入站规则:
HTTP TCP 80 157.51.138.196/32
All traffic All All 157.51.138.196/32
SSH TCP 22 157.51.138.196/32
DNS (TCP) TCP 53 157.51.138.196/32
HTTPS TCP 443 157.51.138.196/32
您缺少实例安全组上的入站规则8080添加它并检查并进一步通知是否不起作用。
华丽的工作!!!
但不确定它是如何工作的;-)会试图找出...
我刚刚停止了所有的apache容器并完全删除了它们。然后执行以下命令,一切都很完美。
使用下面的内容时,请确保将卷(-v)正确映射到主机中的index.html文件。
docker run -d --name httpd -p 9080:8080 -v /home/ec2-user/apache/web1/www/html:/var/www/html:Z docker.io/centos/httpd-24-centos7