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

现在我没有足够的勇气开始使用docker工人,我感觉自己是从上个世纪来的。 在开始之前,我想清除我对docker工人的疑惑。 我的问题主要是在云或托pipe环境中部署/运行Docker镜像。

  • 我可以用任何types的服务器(例如wildfly,payara)和/或数据库服务器(例如mysql,oracle)build立一个docker镜像,并且可以在启用docker的云/数据中心上运行吗?
  • 如果是的话,持久数据如数据库文件和静态存储(如图像,上传的文档,日志)如何存储在docker图像或其他地方? 当我更新应用程序并重新部署新映像时,这些文件会发生什么?

我阅读关于什么是docker的post,但我没有find具体的答案。 原谅我没有做足够的Googlesearch。

我已经在AWS和其他云提供商上运行docker。 如果你有一些系统pipe理和/或开发经验,那真的不是那么难。 关于云主机和入门,大多数提供商有一些关于如何开始使用docker与他们的基础设施的教程:

我可以用任何types的服务器(例如wildfly,payara)和/或数据库服务器(例如mysql,oracle)build立一个docker镜像,并且可以在启用docker的云/数据中心上运行吗?

要让服务器正常运行,只需要在主机上安装docker引擎,就可以使用许多发行版的软件包:

docker引擎安装后,您可以创build基本上任何服务器或服务的dockerfiles。 希望大多数情况下你不需要,因为dockerhub上有很多dockerhub(我使用wildfly,elk-stack和mysql)的Docker文件和预先configuration好的供应商维护镜像。 小心select图像保持,否则你的图像安全问题,可能永远不会得到解决! 或者你必须自己做!

示例图像:

如果是的话,持久数据如数据库文件和静态存储(如图像,上传的文档,日志)如何存储在docker图像或其他地方? 当我更新应用程序并重新部署新映像时,这些文件会发生什么?

通常,您将需要将持久性数据存储在Docker镜像的外部,并将其作为卷挂载到映像中: https : //docs.docker.com/engine/tutorials/dockervolumes/

某些基于云的存储提供商可能更容易以其他方式安装或连接,但是这种容量方法是标准的,IMO。

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

所以你有了:

  • 来自您的云主机(或自己的Docker)的文档
  • 运行docker引擎的云中的主机
  • 0..n图像,你可以从dockerhub抓取或build立你自己。
  • 存储此主机上的永久性数据,或从其他位置挂载,以便在启动时将其装载到泊坞窗图像中。 这是例如MySQL数据文件夹的生活,或者你可以坚持日志,等等。

当然,它可以从那里变得更加复杂,例如,如何透明地扩展和更新你的环境等,但这是例如kubernetes或docker群或其他解决scheme(我自己写了一些,但做不需要大系统的鲁棒性或弹性可伸缩性)。

关于集群pipe理,应该注意Swarm现在已经包含在Docker Core中。 这在社会上引起了一些争议,甚至谈到了一个核心的分歧:

我有在阿里云和AWS上运行Docker的经验。 我没有看到在两个云提供商的Docker上工作有什么不同。 无论云提供商如何,Docker镜像都可以在所有的Linux平台上以相同的方式构build。 但是,数据的持久性需要使用泊坞窗来处理。 但是,build议在阿里云使用RDS等托pipe服务,而不是使用docker。

我可以用任何types的服务器(例如wildfly,payara)和/或数据库服务器(例如mysql,oracle)build立一个docker镜像,并且可以在启用docker的云/数据中心上运行吗?

您可以构build自己的Docker映像或使用已经预先打包并经过云提供商validation的解决scheme。 例如,这里是一个基于Docker的自动集群GlassFish实现 ,可以在Jelastic PaaS上运行和pipe理。

如果是的话,持久数据如数据库文件和静态存储(如图像,上传的文档,日志)如何存储在docker图像或其他地方? 当我更新应用程序并重新部署新映像时,这些文件会发生什么?

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

Interesting Posts