查找docker集装箱

我一直在玩各种dockerdocker机教程。 这是docker机设置

$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS aws-sandbox * amazonec2 Running tcp://52.16.157.182:2376 v1.12.0 dev - virtualbox Running tcp://192.168.99.100:2376 v1.12.0 

我理解一个docker机是一个可以运行一个或多个docker集装箱的主机。 在我的情况下,我有我的笔记本电脑和另一个在EC2上运行docker机。

同时,我已经通过以下命令将EC2实例设置为默认值

 eval $(docker-machine env aws-sandbox) 

这似乎已经工作了,因为aws-sandbox被标记为ACTIVE

现在我已经尝试将docker容器加载到docker-machine中,但我不确定这是否正常工作。

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fd34916854bf orchestratingdocker_web "env" About an hour ago Restarting (0) 9 minutes ago 8000/tcp orchestratingdocker_web_run_2 f98b49ad026a orchestratingdocker_web "/usr/local/bin/pytho" About an hour ago Restarting (0) 23 minutes ago 8000/tcp orchestratingdocker_web_run_1 4d2322aa402e orchestratingdocker_nginx "/usr/sbin/nginx" About an hour ago Up About an hour 0.0.0.0:80->80/tcp orchestratingdocker_nginx_1 1b4386bcccf2 orchestratingdocker_web "/usr/local/bin/gunic" About an hour ago Up About an hour 8000/tcp orchestratingdocker_web_1 9190ffd622ad postgres:latest "/docker-entrypoint.s" About an hour ago Up About an hour 0.0.0.0:5432->5432/tcp orchestratingdocker_postgres_1 380d19e5c239 kitematic/hello-world-nginx "sh /start.sh" About an hour ago Up About an hour 0.0.0.0:8000->80/tcp webserver 

我似乎无法连接到任何这些容器使用任何:

  • localhost:800080
  • 52.16.157.182:800080
  • 192.168.99.100:800080

Docker容器是否按照我的假设坐在Docker-Machine中? 如果是这样,我怎么能列出哪些机器内运行的,为什么我不能访问正在运行的Web服务器?

是的,你在docker机上运行的容器是正确的,在这种情况下是EC2实例。

最可能的原因是无法连接到这些是由于默认的EC2防火墙规则。 由AWS EC2上的docker-machine创build的默认安全组只允许访问SSH,Docker和可能的Swarm。 (请参阅: https : //docs.docker.com/machine/drivers/aws/#/security-group )

80和8080港口不向世界开放。 您将不得不loginAWS并更改安全组以允许更多端口。

作为旁注,在docker ps的概述中,可以看到只有3个容器实际上在端口上侦听,一个在5432上,一个在5432 ,另一个在8000 ,其他端口没有绑定到主机。 欲了解更多信息,我build议阅读dockernetworking和公开端口(请参阅: https : //docs.docker.com/engine/reference/run/#/expose-incoming-ports )