将虚拟主机转换为Docker容器

Dar*_*ryl 13 linux plesk docker coreos

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

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

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

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

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

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

任何和所有输入都表示赞赏.

her*_*off 5

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

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

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

更新:

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