用于生产EC2的Docker

Jas*_*ant 1 amazon-ec2 web-deployment amazon-web-services docker

我是Docker的新手。

据我了解,它创建了可移植的环境,以使用相同的一组软件配置运行应用程序并将其运送到多个平台。这样,它也不会与计算机中的软件冲突。

我已经在开发中使用Docker,并且了解它对于开发以及与其他团队成员共享代码非常有用。每个都可以运行相同的相同软件集。

现在,

我正在考虑在生产中使用docker。在EC2上安装docker,所有内容都将在1个命令中安装/配置。

但是我有几个问题:

  1. 我为什么要在容器内的EC2中安装一些东西。我将只安装1个应用程序,不会有冲突的机会。不会很慢,因为它在容器内,而docker中的任何问题都会破坏我的应用程序?如果我以某种方式破坏数据,将会发生什么?
  2. 我可以某种方式使用Docker而不是驻留在容器中,而是直接在OS中使用吗?
  3. 只需单击一下,我可以使用什么替代方法来部署我的小型Flask应用程序(数据库,nginx,flask,haproxy等?)。这只是一个小型应用程序,我不想让事情变得复杂和浪费。欢迎开源解决方案。
  4. 互联网上充斥着似乎是行业标准的文章,适用于大型应用程序/网站。要学习的工具/技术太多。厨师,木偶,詹金斯,kubernetes。我是否可以在小型网站上没有这些而生存,或者是前进的方向,而我最终必须学习这些?

cec*_*ami 8

我为什么要在容器内的EC2中安装一些东西。我将只安装1个应用程序,不会有冲突的机会。

是的,你是对的。如果您安装一个应用程序,则不会发生冲突。但是,有时您想在同一主机上运行多个应用程序。通常这样做是为了充分利用服务器的资源。另外,某些应用程序需要部署在同一台计算机上才能正常运行。

不会慢,因为它在容器内

是Felter等人 2014年发表的一篇出色的IBM研究论文,标题为“虚拟机和Linux容器的更新性能比较”。可以比较裸机,KVM和Docker容器。总体结果是,在所有类别中,Docker几乎与Native性能相同,并且比KVM更快。

Docker中的任何问题都会破坏我的应用程序?

EC2计算机中的问题也会破坏您的应用程序。您的应用程序应该能够应对失败。这是在Kubernetes中部署应用程序的一个好处(一旦失败,它将自动重新启动容器)。

如果我以某种方式破坏数据,将会发生什么?

您可以在容器上安装卷,该卷在删除容器后将继续存在。这些卷可以存储在EC2计算机文件系统上或某些外部存储上。(请记住,一切都可能崩溃。您应该始终备份数据。)

我可以某种方式使用Docker而不是驻留在容器中,而是直接在OS中使用吗?

您不需要Docker。

只需单击一下,我可以使用什么替代方法来部署我的小型Flask应用程序(数据库,nginx,flask,haproxy等?)。这只是一个小型应用程序,我不想让事情变得复杂和浪费。欢迎开源解决方案。

研究Docker Compose。它允许您使用单个命令部署由多个容器组成的应用程序。它是开源的,可以免费使用。(您也可以与Ansible,Chef,Puppet脱身)您真的只需要其中一个。

互联网上充斥着似乎是行业标准的文章,适用于大型应用程序/网站。要学习的工具/技术太多。厨师,木偶,詹金斯,kubernetes。我是否可以在小型网站上没有这些,或者会成为前进的道路,而我最终将不得不学习这些?

人们早在发明这些工具之前就能够开发和部署网站,因此您一定可以做到!但是,如果没有这些工具,则必须可靠,高度可用且具有可伸缩性的开发和操作以及应用程序变得更加困难。

的,一个是必须为应用程序是一个很好的CI / CD流水线自动构建,测试和部署应用程序。如果上述过程足够复杂,则手动执行此操作会很快失去控制。拥有良好的CI / CD管道可使开发人员专注于对新功能进行编码,而不是不断地管理流程中的操作部分。它使他们能够连续可靠地交付代码。Jenkins,Chef,Puppet,Ansible,Docker compose,Gitlab CI等尝试解决这些确切的问题。但是,对于大多数应用程序而言,詹金斯通常足以实现这一目标。