在AWS EC2实例上部署Docker容器而不login

我是一个微服务初学者,已经花了几个小时在AWS的最微小的痛苦的东西,将不胜感激任何专家的意见,因为我怀疑下一步是非常小的,但可能需要几个小时,否则工作。

所以我部署了一个nano实例,然后ssh到它。 不得不实际重做它来修复安全组,但无论如何它最终会奏效。 使用scp把我的docker图像放在那里,按照这里的说明,在docker save汇总里docker save一个.tar的图像在本地, docker load后放到系统上,等待15分钟后scp上传。 然后在命令提示符下inputdocker run。

在过去的三天里,已经采取了这些(linux)terminal措施,曾经两次尝试过,并且无法从AWS控制台执行,就像上传的那样,但是不会运行。

现在,当我inputdocker run my_image时,它运行得非常奇妙,我可以在这里看到docker run my_imagedocker run my_image docker ps -a命令。

但是,我的AWS实例上的命令提示符正在运行,如果我closuresterminal窗口,它肯定会死亡。 现在我知道它在那里工作,我怎么能“部署”它,即让它运行并继续运行一个月或直到另行通知? 我认为它可能需要某种称为“任务定义”的json文件,但是根本不知道下一步该做什么。 这个任务定义和所有剩下的任务可以在login到实例的terminal中完成吗?

我看到一些错误的东西:

  • 您应该使用Dockerregistry服务而不是SCP映像。 在AWS上有EC2容器registry,或者你也可以使用Docker Hub。 这将使您的图像更容易到您的实例。

  • 我不知道为什么你不能使用控制台启动你的容器。 我假设你正在使用AWS ECS? 您可以尝试使用故障排除指南来帮助您了解您的任务未运行的原因。

  • 这听起来像是你开始在前台(附加到你的shell),而不是在后台docker集装箱。 尝试添加-d标志到您的docker run命令在后台运行容器,以便您可以closures您的SSH会话。 请注意,如果您的容器内的应用程序进程崩溃,容器将仍然停止。 这是使用诸如AWS ECS之类的协调器来定义试图始终运行一定数量的任务的服务的原因之一。 ECS还帮助将Docker容器放到实例上,并自动在后台为您启动。