我是微服务的初学者,今天花了几个小时研究 AWS 最微小的痛苦事情,非常感谢任何专家的建议,因为我怀疑下一步很小,但可能需要几个小时才能解决。
所以我部署了一个 Nano 实例ssh
进去。不得不实际重做它来修复安全组,但无论如何它最终起作用了。用过的scp
按照说明将我的 docker 映像放在那里here https://stackoverflow.com/questions/41782038/how-to-move-docker-containers-to-aws#41791784, 总之docker save
在本地从图像中生成 .tar 并docker load
等待15分钟后远程放入系统scp
上传。然后在命令提示符下输入 docker run。
已经采取了这些(Linux)终端措施,因为在过去的三天里已经两次尝试从AWS控制台执行此操作但失败了,因为它已上传但无法运行。
现在当我打字时它运行得非常好docker run my_image
我可以用这两个命令看到它docker images
and docker ps -a
!
但是我的 AWS 实例上的命令提示符在运行时很忙。如果我关闭终端窗口,它肯定会死掉。既然我知道它在那里工作,我该如何“部署”它,即让它运行并继续运行一个月或直到另行通知?我认为它可能需要某种名为“任务定义”的 json 文件,但根本不知道下一步该做什么。此任务定义和所有剩余任务是否可以在登录到实例的终端内完成?
我看到一些错误的地方:
您应该使用 Docker 注册表服务而不是 SCPing 镜像。 AWS 上有 EC2 Container Registry,或者您也可以使用 Docker Hub。这将使您更轻松地将图像添加到实例上。
我不确定为什么您无法使用控制台启动容器。我假设您使用的是AWS ECS?你可以尝试故障排除指南 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html帮助您找出任务未运行的原因。
听起来您是在前台(附加到您的 shell)而不是在后台启动一个 docker 容器。尝试添加the -d flag https://docs.docker.com/engine/reference/run/#detached-vs-foreground添加到 docker run 命令以在后台运行容器,以便您可以关闭 SSH 会话。请注意,如果容器内的应用程序进程崩溃,容器仍将停止。这是使用 AWS ECS 等编排器来定义始终尝试运行一定数量的任务的服务的原因之一。 ECS 还有助于将 docker 容器加载到实例上并在后台自动启动它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)