我正在学习docker并在https://training.docker.com/self-paced-training
上关注在线教程我已经开发了一个AWS-EC2 Ubuntu AMI。已将HTTP和HTTP添加到安全组。在将putty用于SSH到实例后,我运行了以下命令
docker run -d -p 8888:8080 tomat:8.0
docker ps gives me this
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61d27e1ab2c4 tomcat:8.0 "catalina.sh run" 5 minutes ago Up 5 minutes 0.0.0.0:8888->8080/tcp
当我尝试http public_ip时使用我的网页浏览器:8888我的连接超时了。
netstat -lt on my instance gives me this
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 [::]:8888 [::]:* LISTEN
tcp6 0 0 [::]:32768 [::]:* LISTEN
我缺少什么。为什么我不能http进入我的tomcat容器?
答案 0 :(得分:1)
您已将容器中的端口8080发布到主机上的端口 8888 。如果您登录EC2实例并运行curl http://localhost:8888
,您应该看到响应。
但您的安全组仅允许HTTP(端口80)和HTTPS(端口443),因此AWS阻止端口8888上的流量。如果您要使用非标准端口,则需要打开安全组中的端口8888。
或者,将容器的端口发布到标准HTTP:
docker run -d -p 80:8080 tomcat:8.0
答案 1 :(得分:0)
您需要在安全组中打开8888端口,然后您就可以从互联网访问该应用程序。