amazon-web-services - 在不登录的情况下在AWS EC2实例上部署docker容器

标签 amazon-web-services docker amazon-ec2

我是微服务的初学者,今天花了几个小时研究 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/

相关文章:

docker - 如何将图像 ID 推送到 docker repo

php - 我如何在亚马逊 EC2 云上每 2 小时运行一次 PHP 脚本?

ubuntu - 巨巨 : error: error parsing environment "amazon": no public ssh keys found

java - 流数据服务(Web 服务)

amazon-web-services - 将实例注册到 AWS ECS 集群

amazon-web-services - AWS Elasticsearch 中的 "client node"?

php - 连接到另一个运行 MariaDB 的 docker 容器时,MYSQLI 连接被拒绝

docker - 带有Docker的db2:如何解决bash脚本中的错误?

amazon-ec2 - 如何将 rightscale 或 EC2 AMI 加载到我的笔记本电脑上?

amazon-web-services - 在 AWS、Azure 或 Google Cloud 等主要参与者托管时,我可以相信我的代码和表结构不会被复制吗?