在AWS上运行Docker容器

时间:2016-10-16 19:39:57

标签: docker amazon-ec2

我正在学习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容器?

2 个答案:

答案 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端口,然后您就可以从互联网访问该应用程序。