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

时间:2016-09-13 13:54:04

标签: docker cloud-hosting docker-cloud

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

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

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

3 个答案:

答案 0 :(得分:2)

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

  

我可以使用任何类型的服务器构建docker镜像(例如,wildfly,   payara)和/或数据库服务器(例如mysql,oracle)并且它将继续工作   docker启用了云/数据中心?

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

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

示例图片:

  

如果是,那么数据库文件和静态等持久性数据如何呢?   存储的存储(例如图像,上传的文档,日志)   码头图片或其他地方?当这些文件发生什么时   我更新了我的应用程序并重新部署了新图像?

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

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

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

所以你有:

  • 来自您的云托管服务商(或码头工人自己)的文档
  • 运行docker engine的云中的主机
  • 0..n您可以从dockerhub获取或自己构建的图像。
  • 在此主机上存储持久数据,或者从启动时装入docker镜像的其他位置安装。这是例如mysql数据文件夹是实时的,或者你可以在哪里保存日志等。

当然,它可以从那里变得更复杂,例如如何透明地扩展和更新您的环境等,但这是例如kubernetes或docker swarm或其他一些解决方案(我自己编写了一些脚本,但不需要大型系统的健壮性或弹性可扩展性)。

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

答案 1 :(得分:0)

我有在阿里巴巴云和AWS上运行docker的经验。我认为在两个云提供商上使用docker没有任何区别。无论云提供商如何,Docker镜像都可以在所有Linux平台上以相同的方式构建。但是,需要使用docker卷来处理数据的持久性。但是,建议在阿里巴巴云中使用托管服务(如RDS)来代替数据库,而不是使用docker。

答案 2 :(得分:0)

  

我可以使用任何类型的服务器构建docker镜像(例如,wildfly,   payara)和/或数据库服务器(例如mysql,oracle)并且它将继续工作   docker启用了云/数据中心?

您可以构建自己的Docker镜像,也可以使用已经预先打包并经云提供商验证的解决方案。例如,以下是可以在Jelastic PaaS上运行和管理的auto-clustering Docker-based implementation of GlassFish

  

如果是,那么数据库文件和静态等持久性数据如何呢?   存储的存储(例如图像,上传的文档,日志)   码头图片或其他地方?当这些文件发生什么时   我更新了我的应用程序并重新部署了新图像?

使用上面提到的集群,所有数据都保存在容器中,并在重新启动后保持不变。如果您希望在其他容器之间共享,也可以选择连接单独的数据存储容器。