【问题标题】:Understanding Docker for providing services like web, mysql or similar了解 Docker 以提供 web、mysql 或类似服务
【发布时间】:2017-06-30 10:34:23
【问题描述】:

我有几个关于 Docker 的问题。

首先我的项目: 我在共享主机上有一个博客,想把它移到云端,以便我掌握所有服务器端,并有可能根据我的需要扩展我的服务器。

我的第一个打算是设置一个不错的 ubuntu 14 lts 作为带有 nginx、php 7 和 mysql 的服务器。但我认为将这样的服务器转移到另一个云(即从 gce 到 aws)并不容易。然后我考虑使用 docker,因为一位朋友告诉我设置容器是多么容易,以及将它们从一台服务器移动到另一台服务器是多么容易。

然后,我阅读了很多关于 docker 的信息,但偶然发现了一些我想知道的事情。

据我了解,docker 只运行 php、mysql 或类似服务,但不保存数据,对吧? 我将在哪里存储所有数据,如数据库、nginx.conf、php.ini 以及我想用 nginx 服务的所有文件(即 /var/www/)? 它们是否存储在主机系统上?如果是,移动 docker 设置然后移动整个服务器不会更容易,不是吗?

使用 Docker 为 Wordpress 博客或其他使用 MySQL 等的网站提供服务真的有优势吗?

提前致谢

【问题讨论】:

  • 移动数据永远是个问题,docker帮不了。 docker 将有助于更快地设置您的环境,一旦您可以在您的机器中设置它并且当它变得稳定时,您可以在云中启动相同的容器,您对 nginx、mysql e wp 的所有配置都可以嵌入在图像中,因此当您再次移动它或创建服务的新实例时将“简单”为docker run。但是设置完成后创建的数据库数据和其他内容需要在新服务器中导出和导入。
  • 这个问题可能对你有帮助:*.com/questions/16047306/…
  • 按照您表达需求的方式,听起来您想要一个 虚拟机,例如 Oracle Virtual Box 或 VM Ware 等。 @lucas 提供的链接很好读。需要注意的一个陷阱:您的虚拟机网络主机选项将会更少,而且可能更昂贵。

标签: mysql wordpress nginx docker cloud


【解决方案1】:

您的数据要么存储在主机上,要么您的数据远程连接到 docker 容器(使用网络连接的块设备)。

当您将数据存储在主机上时,您有多种选择。

  1. 数据可以在您的一个容器“内部”(例如,您的 mysql 数据库位于您的 mysql 容器中)。

  2. 您可以在容器中从主机装载一个或多个目录。因此,数据存在于您的主机上。

  3. 您可以创建用于存储数据的 Docker 卷或 Docker 卷容器。这些卷或卷容器与您的应用程序一起安装在容器内。然后数据会保存在 Docker 管理的目录中。

有关这些选项的详细信息,请参阅dockervolumes

  1. 最后一个选项是将远程存储挂载到 docker 容器。 Flocker 是您的选择之一。

在我的工作中,我设置了一个在 docker 容器中运行许多服务的主机(即服务器)。每个服务的数据都“存在”在 Docker 数据卷容器中。

这样,数据和服务就完全分离了。这让我可以在不影响数据的情况下启动、停止、升级和删除正在运行我的服务的容器。

我还制作了由cron 启动的独立 Docker 容器,这些容器备份数据卷容器中的数据。

对于mysql,备份容器连接mysql容器,远程执行mysqldump

我还可以使用从生产服务器备份的数据,在我的开发机器上运行正在运行我的服务的(相同的)容器。

这很有用,例如,测试将 mysql 从 5.6 升级到 5.7。

【讨论】: