将虚拟主机转换为Docker容器

时间:2014-08-04 17:20:46

标签: linux docker plesk coreos

我目前使用Plesk运行Red Hat Linux服务器来托管大约一百个域。出于多种原因,我想从Plesk转移到Docker容器,每个虚拟主机作为一个或多个容器。到目前为止,我还不清楚到目前为止我所阅读的内容是什么。

典型的站点包括doc根文件区域和一个或两个MySQL数据库。我们在所有网站上运行PHP。某些站点可能会限制它们可以运行的PHP版本。有些网站使用SSL。我不相信MySQL版本有任何限制,但是未来的MySQL版本当然可能会弃用某些需要的功能。我不相信它对Apache版本有任何依赖性,但我确实依赖于正在安装的某些特定Apache模块。可能有一个或两个站点在其doc根目录之外具有依赖关系,而不是基本虚拟主机设置的一部分,但我认为不需要特定版本的Linux。

我希望容器具有最大的可移植性,以便我可以灵活地将站点移动到我选择的任何服务器或云服务。我的部分目标是淘汰当前服务器并将站点移动到最适合他们的服务器。

我还想在创建容器后尝试升级PHP版本。

单个容器是否包含整个doc根文件系统,包括用户可以上传/ ftp文件的数据目录?它会包含MySQL数据库,还是会分开?我假设我会包含当前版本的PHP,以便在我准备好时可以升级每个版本。当需要特定的Apache模块时,它会包含Apache吗?是否有理由在所有容器中包含Apache和/或MySQL?

最后一块。我正在研究使用CoreOS,它利用Docker作为不可或缺的部分。

赞赏任何和所有输入。

2 个答案:

答案 0 :(得分:5)

Docker的整个想法是运行流程/组件,使其易于升级。我在过去对此进行了修改,并提出了以下建议。

  • 为每个实例(客户)创建四个容器:
    • Apache或nginx
    • PHP-FPM
    • MySQL
    • Busybox(作为数据容器)
  • 将所有这些链接在一起并将卷设置为应保留在数据容器中的所有数据。例如,MySQL数据和/ var / www以及站点配置文件。

通过这种方式,您可以随时切换其中一个组件,同时保留其他组件。但是,如果Docker是一个完整虚拟服务器的解决方案,那么它是值得怀疑的,因为Docker容器没有完整的初始化系统,你不得不采取相当大的弯曲来完全类似于一个完整的虚拟机。更多地将它视为"应用程序容器",因此关注点分离的想法。

<强>更新

较新的Docker版本附带docker-compose工具,可以极大地简化此任务。

答案 1 :(得分:1)

我正在尝试用cPanel而不是Plesk解决相同的问题。

我们可以尝试使用cpanel或plesk的插件来实现这一点,但我们不得不担心一些事情。

我们必须为我们的客户可以使用的容器创建一些预制模板图像..它不能只是来自dockerhub,用户Dockerfiles等的任何容器因为cPanel / Plesk将查找bw的特定位置上可用的特定日志文件计算,磁盘配额等。

此解决方案的最大优势是我们可以提供CloudLinux类型的隔离和轻松的资源分配/公平共享。然而,这并不容易。

回答您的问题:

每个容器几乎都是一个完整的系统,所以你需要每个主机拥有更少的客户端,因为每个容器可能像1G一样,默认情况下必须运行自己的webserver / php,因此需要更多的ram脚印。

在每个容器中运行Mysql很痛苦,最好在主机或1个专用容器上使用mysql并共享它。通过这种方式,Plesk的工具将有所帮助。

您可能还必须使用标准的apache,然后在ssl终止后将其反向代理到每个容器,因此使用Plesk的标准工具但我认为容器必须自己运行自己的网络服务器或者我们可能有用php-fpm做一些技巧,让主机的apache与每个容器的php-fpm进程通信。这比允许每个容器只运行自己的Nginx更痛苦。

如果需要,它不会阻止用户在其容器中安装自己的Mysql服务器。

这种东西对于来自cPanel或Plesk的人来说很容易做..但对于其他人来说,它需要大量的专用开发时间+测试以确保所有这些工作。

我打算花一些时间为cPanel创建这种插件但仍然没有受到重视。如果我能吸引一些投资者,我可以试试这个。

您可以看到CPanel在此问题上显示的兴趣点:http://features.cpanel.net/responses/dockerio-support

我会让你决定

也作为替代解决方案:

所以我没有玩Cpanel的曲调,而是创造了这个。 https://github.com/paimpozhil/WhatPanel 这里每个站点都在自己的容器中运行(如果需要,还可以运行自己的VM)。

迁移很简单,因为使用以下工具导出/导入容器:on github.com / paimpozhil / docker-volume-backup&amp; acaranta /搬运工-backuper

我没有在这里完成migrator / php升级工具等,但是当我有空闲时间时会这样做。