Docker 和 AMI 之间的区别
Difference between Docker and AMI
在 AWS 的上下文中:
AMI用于打包软件,可以部署在EC2上。
Docker也可以用来打包软件,也可以部署到EC2
两者有什么区别,我该如何选择?
AMI 是一个图像。这是一台完整的机器,您可以从中启动新实例。 docker 容器更轻巧便携。 docker 容器应该可以在提供商之间传输,而 AMI 则不能(很容易)。
AMI 基本上是 VM 映像。
Docker 容器被打包 mini-images 运行 在隔离环境中的某些 VM 上。
link 详细介绍了 Docker 和 AMI 之间的区别:-
https://forums.docker.com/t/how-would-you-differentiate-between-docker-vs-ec2-image/1235/2
虽然这并没有直接回答问题,但提供了一些关于如何使用它们的背景。
一种方法是使用 Amazon AMI(或可以是任何 AMI)启动 EC2 实例,然后在其上启动 运行 docker 个容器(具有所有依赖项)。使用这种方法,docker 图像会随着时间的推移而变得臃肿,并且容器会随着时间的推移而漂移。应用程序启动和 运行ning 所花费的时间也更多,因为必须启动 Ec2 并且 docker 必须启动您的应用程序服务器。
另一种方法是"Immutable Ec2 instances"。通过这种方法,您可以使用 Amazon AMI 作为基础并安装所有依赖项(使用 shell 脚本或 Ansible)并将它们烘焙到 AMI 中。我们使用 Hashicorp Packer,这是一个了不起的工具。由于所有依赖项(java8、tomcat、war 文件等)已经安装在AMI.
对于生产用例,使用 Packer 创建 AMI 并使用 Terraform 启动云资源以使用此 AMI。在 Jenkins 管道中将所有这些联系在一起。
在 AWS 的上下文中:
AMI用于打包软件,可以部署在EC2上。 Docker也可以用来打包软件,也可以部署到EC2
两者有什么区别,我该如何选择?
AMI 是一个图像。这是一台完整的机器,您可以从中启动新实例。 docker 容器更轻巧便携。 docker 容器应该可以在提供商之间传输,而 AMI 则不能(很容易)。
AMI 基本上是 VM 映像。 Docker 容器被打包 mini-images 运行 在隔离环境中的某些 VM 上。
link 详细介绍了 Docker 和 AMI 之间的区别:- https://forums.docker.com/t/how-would-you-differentiate-between-docker-vs-ec2-image/1235/2
虽然这并没有直接回答问题,但提供了一些关于如何使用它们的背景。
一种方法是使用 Amazon AMI(或可以是任何 AMI)启动 EC2 实例,然后在其上启动 运行 docker 个容器(具有所有依赖项)。使用这种方法,docker 图像会随着时间的推移而变得臃肿,并且容器会随着时间的推移而漂移。应用程序启动和 运行ning 所花费的时间也更多,因为必须启动 Ec2 并且 docker 必须启动您的应用程序服务器。
另一种方法是"Immutable Ec2 instances"。通过这种方法,您可以使用 Amazon AMI 作为基础并安装所有依赖项(使用 shell 脚本或 Ansible)并将它们烘焙到 AMI 中。我们使用 Hashicorp Packer,这是一个了不起的工具。由于所有依赖项(java8、tomcat、war 文件等)已经安装在AMI.
对于生产用例,使用 Packer 创建 AMI 并使用 Terraform 启动云资源以使用此 AMI。在 Jenkins 管道中将所有这些联系在一起。