能否从Docker镜像创建AWS AMI?

24

我在AWS ECR中有一个Docker镜像,我想将其转换为AWS AMI以创建具有环境的实例。

尝试使用AMI而不是Docker容器的原因

我必须在m4.xlarge实例中运行计算密集型的ML任务,在一些文本文件中的Docker容器内。但是,使用Docker时,实例的CPU利用率达到100%,脚本会被提前终止。

然而,在Docker之外,它在同一实例中正常运行。


所以,我想从Docker转移到AMI,但我也想利用Docker进行环境创建和测试速度,这使得本地开发变得更加高效。

因此,是否可能从我测试和部署到ECS注册表中的Docker镜像创建一个AMI


2
这是构建 AMIs 的标准工具:https://www.packer.io。我非常确定它可以实现你所描述的功能。 - Matt Schuchard
听起来你的CPU资源限制可能有点紧张。这是在运行Docker的EC2实例还是AWS ECS?提到ECR意味着你可能正在使用ECS。ECS将每个主机分割成1024个CPU“份额”。如果你配置了硬CPU限制,总数低于总份额,那么你不应该会遇到问题。 - Brad Murray
2个回答

3

虽然有一种开源工具可以通过docker文件创建/构建AWS AMI,但是没有直接的方法可以从docker镜像中创建AWS AMIs,但是只支持ENV、RUN、COPY和ADD指令,其他指令将被忽略。

用于从Docker文件构建AWS AMI的开源工具

https://github.com/mickep76/docker-build-ami

https://pypi.python.org/pypi/docker-build-ami/0.1.3

如果你真的对此感兴趣,那么可以创建一个适当的Docker文件来制作你的Docker镜像。为此,你可以参考以下链接:

从Docker容器中提取Dockerfile是否可行?

如何从镜像生成Dockerfile?


2
似乎Docker镜像或Docker存在问题或配置错误。您提到实例在没有Docker的情况下运行相同的脚本没有问题? 那么最好创建一个实例的AMI,其中包含正在运行的脚本,您根本不需要使用Docker。 在Docker中运行脚本最多意味着Docker配置限制了CPU,但不会导致主机CPU占用率达到100%并终止脚本。 您应该尝试使用相同的镜像在Docker容器中运行sleep10000,这样您就可以进入容器,运行感兴趣的脚本并查看哪些内容失败了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接