Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在云或数据中心上使用Docker_Docker_Cloud Hosting_Docker Cloud - Fatal编程技术网

如何在云或数据中心上使用Docker

如何在云或数据中心上使用Docker,docker,cloud-hosting,docker-cloud,Docker,Cloud Hosting,Docker Cloud,我没有足够的勇气开始使用docker现在我感觉自己是上个世纪的人。我想在开始之前澄清我对docker的疑虑。我的问题主要是在云或托管环境中部署/运行docker映像 我可以用任何类型的服务器(如wildfly、payara)和/或数据库服务器(如mysql、oracle)构建docker映像吗?它是否可以在支持docker的云/数据中心上工作 如果是,那么数据库文件和静态存储(如图像、上传的文档、日志)等存储在docker图像或其他地方的持久数据如何?当我更新应用程序并重新部署新映像时,这些文

我没有足够的勇气开始使用docker现在我感觉自己是上个世纪的人。我想在开始之前澄清我对docker的疑虑。我的问题主要是在云或托管环境中部署/运行docker映像

  • 我可以用任何类型的服务器(如wildfly、payara)和/或数据库服务器(如mysql、oracle)构建docker映像吗?它是否可以在支持docker的云/数据中心上工作
  • 如果是,那么数据库文件和静态存储(如图像、上传的文档、日志)等存储在docker图像或其他地方的持久数据如何?当我更新应用程序并重新部署新映像时,这些文件会发生什么情况

我读过关于docker是什么的帖子,但我找不到具体的答案。请原谅我没有进行足够的谷歌搜索。

我在AWS和其他云提供商上运行过docker。如果您在系统管理和/或devops方面有一些经验,那么这其实并不难。关于云主机和入门,大多数提供商都有一些关于如何开始使用docker及其基础设施的教程:

我可以用任何类型的服务器(如wildfly、, payara)和/或数据库服务器(如mysql、oracle),是否可以使用 支持docker的云/数据中心

要启动并运行服务器,您只需在主机上安装docker引擎,许多发行版都有相应的软件包:

安装docker引擎后,基本上可以为任何服务器或服务创建docker文件。希望您在大多数情况下不需要这样做,因为dockerhub上已经有无数docker文件和预配置、供应商维护的映像(例如,我使用wildfly、elk stack和mysql)。在选择要维护的图像时要小心,否则图像中的安全问题可能永远无法修复!否则你必须自己做

示例图像:

如果是,那么像数据库文件和静态文件这样的持久数据呢 存储在 docker图像还是其他地方?当发生以下情况时,这些文件会发生什么 是否更新应用程序并重新部署新映像

通常,您需要在docker映像外部存储持久数据,并将其作为卷装入映像:

IMO表示,一些基于云的存储提供商可能更容易以其他方式装载或连接,但这种卷方法是标准的

对于日志文件,我实际上将它们推送到ELK服务器,因此不一定需要有日志卷。但是,由于ELK服务器也是docker映像,因此它确实有一个数据持久化的卷

所以你有:

  • 来自云主机(或docker本身)的文档
  • 云中运行docker引擎的主机
  • 0..n图像,您可以从dockerhub抓取或自行构建
  • 存储此主机上或从其他位置装载的持久数据,这些数据在启动时装载到docker映像中。这是mysql数据文件夹所在的位置,或者您可以保存日志等
当然,它可能会变得更加复杂,例如如何透明地扩展和更新您的环境等,但这是kubernetes或docker swarm或其他解决方案所需要的(我自己编写了一些脚本,但不需要大型系统的健壮性或弹性可伸缩性)

关于集群管理,应该注意Swarm现在包含在Docker Core中。这在社区中引起了一些争议,甚至谈论到了核心问题:


    • 我也有在阿里云和AWS上运行docker的经验。我没有看到在两个云提供商上与docker合作有任何区别。Docker映像可以在所有linux平台上以相同的方式构建,而不考虑云提供商。但是,需要使用docker卷来注意数据的持久性。但建议数据库使用阿里云RDS等托管服务,不要使用docker

      我可以用任何类型的服务器(如wildfly、, payara)和/或数据库服务器(如mysql、oracle),是否可以使用 支持docker的云/数据中心

      您可以构建自己的Docker映像,也可以使用已经预打包并经云提供商验证的解决方案。例如,这里有一个可以在Jelastic PaaS上运行和管理的

      如果是,那么像数据库文件和静态文件这样的持久数据呢 存储在 docker图像还是其他地方?当发生以下情况时,这些文件会发生什么 是否更新应用程序并重新部署新映像


      使用上述集群,所有数据都保存在容器中,并在重启后保持不变。作为一个选项,如果您希望在其他容器中共享数据存储容器,也可以连接单独的数据存储容器。

      谢谢您的详细回答。我在s.o的下一个问题一定是关于自动缩放的。我在答案中添加了一些关于讨论这两个主要解决方案的附加链接。现在这是一个热门话题。