我有几个关于 Docker 的问题。
首先是我的项目: 我在共享主机上有一个博客,我想将其移动到云端,以便掌握所有服务器端,并有可能根据我的需要扩展我的服务器。
我的第一个打算是使用 nginx、php 7 和 mysql 设置一个不错的 ubuntu 14 lts 作为服务器。但我认为将这样的服务器转移到另一个云,即从 gce 到 aws 并不是那么容易。然后我想到了使用 docker,因为一位 friend 告诉我设置容器是多么容易,以及将它们从一台服务器移动到另一台服务器是多么容易。
然后我阅读了很多关于 docker 的内容,但偶然发现了一些我想知道的事情。
在我的理解中,docker 只运行 php、mysql 或类似的服务,但不保存数据,对吗? 我应该在哪里存储所有数据,如数据库、nginx.conf、php.ini 和我想用 nginx 服务的所有文件(即/var/www/)? 它们存储在主机系统上吗?如果是,移动 docker 设置然后移动整个服务器不会更容易,不是吗?
使用 Docker 为 Wordpress 博客或其他使用 MySQL 等的网站提供服务真的有优势吗?
提前致谢
最佳答案
您的数据要么存储在主机上,要么您的数据远程附加到 docker 容器(使用网络附加 block 设备)。
当您将数据存储在主机上时,您有多种选择。
数据可以位于您的某个容器“内部”(例如,您的 mysql 数据库位于您的 mysql 容器内)。
您可以将主机上的一个或多个目录挂载到容器中。那么数据就存在于你的主机上。
您可以创建用于存储数据的 Docker 卷或 Docker 卷容器。这些卷或卷容器与您的应用程序一起安装在容器内。然后,数据位于由 Docker 管理的目录中。
有关这些选项的详细信息,请参阅 dockervolumes
- 最后一个选项是将远程存储挂载到 docker 容器中。 Flocker是您对此的选择之一。
在我的工作中,我设置了一个在 docker 容器中运行许多服务的主机(即服务器)。这些服务中每一项的数据都“存在”于 Docker 数据卷容器中。
这样,数据和服务就完全分离了。这使我能够在不影响数据的情况下启动、停止、升级和删除运行我的服务的容器。
我还制作了由 cron
启动的单独 Docker 容器,这些容器备份数据卷容器中的数据。
对于mysql,备份容器连接到mysql容器,远程执行mysqldump
。
我还可以使用我从生产服务器备份的数据来运行在我的开发机器上运行我的服务的(相同的)容器。
例如,这对于测试将 mysql 从 5.6 升级到 5.7 很有用。
关于mysql - 了解 Docker 以提供 web、mysql 或类似服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187148/