amazon-web-services - 如何从 EC2 实例中提取 ECS docker 镜像?

标签 amazon-web-services docker amazon-ec2

从 EC2 实例中提取位于 ECS 存储库中的 Docker 镜像的最佳实践是什么?

  • 我将 Docker 镜像推送到位于 ECS 下的存储库中。
  • 我想启动一个 EC2 实例并从中提取这些图像。

  • 我习惯利用ECS任务。要运行 Docker 容器 5 分钟,我需要转到 Auto-Scale ,将最小值设置为 1 ,进入 ECS 页面,等待实例启动并运行我的任务。对我个人使用来说太烦人了。我想快速运行它并快速停止它。

    我想简单地运行我的 Docker 容器,但好吧,这是不可能的,然后我想创建一个 EC2 模板,该模板将直接在 EC2 实例中运行我的 Docker 容器。
  • 怎么做?
  • 如何处理 EC2 中的 key /用户和 AWS CLI? (Access/Secret Access Key 限制为30min,我在EC2实例/模板的User Data中写不清楚)

  • 我认为我的需求是非常基本的,我找不到最好的方法来做到这一点。博客文章主要介绍如何在 Linux 上运行 Docker,而不是在 AWS 上运行的最佳方式。

    最佳答案

    这可以通过 EC2 实例角色和执行 docker 登录的脚本的组合来完成,后跟 docker pull为您推送的图像。

    先决条件:安装了 AWS CLI 和 Docker 的 EC2 实例。

    首先,您必须添加内置 AmazonEC2ContainerRegistryReadOnly您的 EC2 实例的 IAM 角色的 IAM 策略(这将授予对 所有 推送图像的读取访问权限)。如果您希望更加严格,可以改用以下政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "GrantSingleImageReadOnlyAccess",
          "Effect": "Allow",
          "Action": [
            "ecr:BatchCheckLayerAvailability",
            "ecr:GetDownloadUrlForLayer",
            "ecr:GetRepositoryPolicy",
            "ecr:DescribeRepositories",
            "ecr:ListImages",
            "ecr:DescribeImages",
            "ecr:BatchGetImage"
          ],
          "Resource": "<aws-account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>"
        },
        {
          "Sid": "GrantECRAuthAccess",
          "Effect": "Allow",
          "Action": "ecr:GetAuthorizationToken",
          "Resource": "*"
        }
      ]
    }
    

    接下来,您必须创建一个脚本来为您执行登录和图像拉取。典型的脚本如下所示:
    $(aws ecr get-login --no-include-email --region <region>);
    docker pull <aws-account-id>.dkr.ecr.<region>.amazonaws.com/<image-name>:<optional-tag>;
    

    请注意,此脚本必须以 root 用户身份运行才能正确访问 Docker 守护程序。

    Another way of solving this all together would be to look into automation options for ECS tasks.

    关于amazon-web-services - 如何从 EC2 实例中提取 ECS docker 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53095803/

    相关文章:

    amazon-web-services - 使用 Filezilla 和 SFTP 连接到 Amazon EC2 文件目录

    amazon-web-services - EC2 的 PuTTy 连接超时

    amazon-web-services - AWS Data Pipeline 如何运行 EC2 实例?

    amazon-web-services - 具有 EC2 和 Fargate 实例的 AWS 混合集群

    linux - 哪些 Linux 官方发行版小于 100mb?

    django - 在 EC2 上以几乎零停机时间部署(单节点)Django Web 应用程序

    amazon-web-services - Python 脚本作为 AWS S3 存储桶上的 Cron

    amazon-web-services - 如何将 aws 私有(private)存储桶复制到 azure 存储

    c++ - 通过gdb连接到远程gdbserver时出错

    linux - docker 容器写入挂载卷的文件的所有权