我是微服务的初学者,今天花了几个小时研究 AWS 最微小的痛苦事情,非常感谢任何专家的建议,因为我怀疑下一步很小,但可能需要几个小时才能解决。
所以我部署了一个 Nano 实例 ssh
进去。不得不实际重做它来修复安全组,但无论如何它最终起作用了。使用过scp
按照说明将我的 docker 镜像放在那里 here ,总之docker save
在本地从图像中生成 .tar 并 docker load
等待15分钟scp
后远程放入系统上传。然后在命令提示符下输入 docker run。
已经采取了这些(linux)终端措施,因为在过去的三天里已经两次尝试从AWS控制台执行此操作,但都失败了,因为它已上传但无法运行。
现在,当我输入 docker run my_image
时,它运行得非常好我可以使用命令 docker images
在那里看到它和docker ps -a
!
但是我的AWS实例上的命令提示符在运行时很忙..如果我关闭终端窗口,它肯定会死掉。既然我知道它在那里工作,我该如何“部署”它,即让它运行并继续运行一个月或直到另行通知?我认为它可能需要某种名为“任务定义”的 json 文件,但根本不知道下一步该做什么。此任务定义和所有剩余任务可以在登录到实例的终端内完成吗?
最佳答案
我发现一些错误:
您应该使用 Docker 注册表服务而不是 SCPing 镜像。 AWS 上有 EC2 Container Registry,或者您也可以使用 Docker Hub。这将使您更轻松地将图像加载到实例上。
我不确定为什么您无法使用控制台启动容器。我假设您使用的是AWS ECS?您可以尝试troubleshooting guide帮助您找出任务未运行的原因。
听起来您正在前台启动一个 docker 容器(附加到您的 shell)而不是在后台。尝试添加the
-d
flag添加到 docker run 命令以在后台运行容器,以便您可以关闭 SSH session 。请注意,如果容器内的应用程序进程崩溃,容器仍将停止。这是使用 AWS ECS 等编排器来定义始终尝试运行一定数量的任务的服务的原因之一。 ECS 还有助于将 docker 容器加载到实例上并在后台自动启动它。
关于amazon-web-services - 在不登录的情况下在AWS EC2实例上部署docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394082/