在AWS EC2实例上部署docker容器,而无需登录

时间:2017-06-06 15:28:21

标签: amazon-web-services docker amazon-ec2

我是微服务的初学者,并且花了几个小时研究AWS今天最微小的痛苦事情,我会感谢任何专家的建议,因为我怀疑下一步非常小但是我可能需要花费数小时才能解决问题。 / p>

所以我在其中部署了一个nano实例,然后ssh。不得不实际重做它来修复安全组,但无论如何它最终都有效。使用scp按照说明here将我的泊坞窗图片放在那里,在摘要docker save中,在本地图片中创建.tar,然后docker load将其放入等待15分钟以便scp上传后远程系统。然后在命令提示符下运行键入的docker。

在过去的3天里曾经使用过这些(linux)终端措施,曾经两次尝试过,并且未能通过AWS控制台执行此操作,因为它已上传但无法运行。

现在,当我输入docker run my_image时,它会运行得非常好,我可以使用命令docker imagesdocker ps -a看到它!

但我的AWS实例上的命令提示符在运行时正忙...如果我关闭终端窗口它肯定会死掉。既然我知道它在那里工作,我怎么能“部署”它,即让它运行并继续运行一个月或直到另行通知?我认为它可能需要某种名为“任务定义”的json文件,但根本不知道下一步该做什么。此任务定义和所有剩余任务是否可以从登录到实例的终端中完成?

1 个答案:

答案 0 :(得分:2)

我看到一些错误:

  • 您应该使用Docker注册表服务而不是SCP图像。在AWS上有EC2 Container Registry,或者您也可以使用Docker Hub。这样可以更轻松地将图像添加到实例中。

  • 我不确定为什么你无法使用控制台启动容器。我假设您使用的是AWS ECS?您可以尝试使用troubleshooting guide来帮助您弄清楚任务未运行的原因。

  • 听起来你正在前台(连接到你的shell)而不是在后台启动一个docker容器。尝试将the -d flag添加到docker run命令以在后台运行容器,以便关闭SSH会话。请注意,如果容器内的应用程序进程崩溃,容器仍将停止。这是使用AWS ECS等协调器定义将尝试始终运行一定数量任务的服务的一个原因。 ECS还帮助将docker容器放到实例上并自动在后台启动它。