Docker和AMI之间的区别

Sch*_*eir 25 amazon-ec2 amazon-web-services docker amazon-ami

在AWS的上下文中:

AMI用于打包软件,可以部署在EC2上.Docker还可用于打包软件,也可以部署到EC2.

两者之间有什么区别?我如何在它们之间做出选择?

小智 29

AMI是图像.这是一台可以从中启动新实例的整机.docker容器更轻巧便携.docker容器应该可以在提供者之间传输,而AMI不是(容易).

AMI基本上是VM映像.Docker容器是打包的迷你映像,可在隔离环境中的某些VM上运行.

  • AMI 和 docker **images** 之间不应该进行比较吗? (6认同)

Vin*_*nay 6

此链接有大约泊坞窗和AMI之间的差异的详细信息: - https://forums.docker.com/t/how-would-you-differentiate-between-docker-vs-ec2-image/1235/2

  • 虽然你的答案是100%正确的,但如果链接目标消失,它也可能变得100%无用。请编辑您的答案并将链接保留为原始来源。 (2认同)

Vim*_*mar 6

尽管这并没有直接回答问题,但提供了有关如何使用它们的一些背景知识。

一种方法是使用 Amazon AMI(或可以是任何 AMI)启动 EC2 实例,然后在其上运行 docker 容器(具有所有依赖项)。使用这种方法,docker 镜像会随着时间的推移而变得臃肿,并且随着时间的推移,容器会发生漂移。此外,应用程序启动和运行所需的时间更长,因为必须启动 Ec2 并且 docker 必须启动您的应用程序服务器。

另一种方法是“不可变的 Ec2 实例”。通过这种方法,您使用 Amazon AMI 作为基础并安装所有依赖项(使用 shell 脚本或 Ansible)并将它们烘焙到 AMI 中。我们使用 Hashicorp Packer,这是一个了不起的工具。由于所有依赖项(java8、tomcat、war 文件等)都已安装在 AMI 中,因此应用程序启动和运行所需的时间大大减少。

对于生产用例,使用 Packer 创建 AMI 并使用 Terraform 启动云资源以使用此 AMI。在 Jenkins 管道中将所有这些联系在一起。