基于Docker的虚拟主机

时间:2020-08-04 20:40:20

标签: docker

由于经验不足,我正在发布此问题,我需要专业建议。 SO中的问题主要是关于如何使用在单个Web主机上运行的Docker来部署或托管多个网站。可以做到,但对于流量中等的网站来说是理想选择。

我在本地机器上部署了基于Docker的容器进行开发。一个软件容器具有主应用程序的副本以及所有依赖项-库,语言,框架以及所有其他内容。

对于我来说,将docker-compose.yml或dockerfile迁移到任何远程Web Server变得很容易。所有软件和依赖项均已安装,并且将像本地计算机一样运行。

(说)我有一个VPS,我想使用Docker托管多个网站。我唯一需要配置的是端口,以便将域映射到端口80。为此,我必须使用额外的NGINX进行路由。

但是VPS可以用于托管多个网站,而无需进行容器化。因此,在AWS服务器,Google,Hostgator等Web服务器中运行Docker有什么特殊的好处,或者Docker是最好的还是仅在本地计算机上处​​于空闲状态才能开发,而不是部署在Web Servers for Hosting中。

1 个答案:

答案 0 :(得分:0)

docker用于简单虚拟主机的主要好处是:

  • 隔离每个网站/服务可能具有不同的依赖关系要求(一个可能需要php 5,另一个php 7和另一个nodejs)。

  • 关注点分离:如果您将设置拆分为多个容器,则可以轻松升级或替换其中的一部分。 (只需考虑有两个网站的设置,每个网站都需要一个postgres数据库。如果每个网站都有自己的db容器,那么在不影响另一个网站的postgres版本的情况下不会有任何问题。)

  • 可重复性,您可以构建一次docker映像,在接受后对其进行测试,将完全相同的映像升级到暂存阶段,然后再投入生产。而且您将能够在本地拥有与服务器上相同的环境

  • 环境和设置,每个服务可能取决于不同的环境(例如smtp设置或数据库连接)。使用容器,您可以轻松地为每个容器提供特定的环境变量。

  • 安全性人们可以对此争论不休,因为容器本身在安全性方面对您没有多大帮助。但是,由于更容易进行依赖项升级,分离的网络等,大多数人最终都会获得更安全的设置。 (只需在这里再次考虑db容器,这些容器就可以与您的应用程序/网站容器共享一个网络,并且无需在本地公开端口。)

    请注意docker端口映射。它使用iptables并默认覆盖大多数防火墙(如ufw)的设置。这里有一个有关如何避免这种情况的信息仓库:https://github.com/chaifeng/ufw-docker

也有很多项目可以使请求到应用程序(在这种情况下为容器)的路由自动进行,这非常有趣且容易。它们通常还集成了执行ssl终止的正确方法。如果您设置的Web服务器包含多个容器,这些容器应该都可以在端口80和443上访问,则我强烈建议您调查traefik