Docker用于非代码部署?

时间:2017-01-13 18:56:32

标签: docker

我正在尝试帮助系统管理员组减少服务器和服务他们管理的项目的停机时间。他们最大的问题是他们必须取消服务,安装升级/配置,然后重新启动它并希望它能够正常工作。

我听说docker是解决这个问题的方法,但通常是从开发人员圈子中将他们的node / python / ruby​​ / c#/ java等应用程序部署到生产环境中。

我想要帮助的小组正在使用需要大量配置和管理的供应商软件。在这种情况下仍然可以使用码头工具吗?我们可以在容器上安装任何随机软件吗?然后将其保存在私有存储库,升级版本等中?

如果这有任何区别,这是一个Windows环境。

2 个答案:

答案 0 :(得分:2)

Docker擅长无状态应用程序。您可以将它用于持久数据样式应用程序,但需要使用volume命令。

  

在这种情况下仍然可以使用码头工具吗?

是的,但这取决于应用程序。它应该能够安装无头,以及其他非常具体的东西。 (EG:与第三方服务器交谈获取许可证可能会产生问题)

  

我们可以在容器上安装任何随机软件吗?

是......但是:请记住,当容器重新启动时,该软件将会消失。最好将其创建为图像,然后进行部署。请参阅下面的示例。

  

然后将其保存在私有存储库,升级版本等中?

是。

以下是一个示例管道:

为操作系统创建Dockerfile以及安装应用程序所需的步骤。 (应该是无头的)

构建图像(此时,它被称为图像,而不是容器)

通过创建本地容器在本地测试图像。此容器具有配置数据,例如环境变量,所需的持久数据卷等。

如果它满足当地开发者的需求,那么你可以:

  1. 让构建服务器创建映像并将其发布为内部映像 docker registry(最佳实践)
  2. 让您的本地开发者发布它 到内部docker注册表
  3. 此时,您的下一级环境可以从docker注册表中下载图像,配置它们并创建容器。

    简而言之,它需要大量的肘部油脂,但是可能。

答案 1 :(得分:0)

  

我们可以在容器上安装任何随机软件吗?

通常是的,但是你可以在开发用于裸机的传统软件上遇到很多问题。

  • 起初它可能是持久性问题,但可以使用volumes来解决。
  • 在第二个程序中,在完整操作系统上运行良好可以在容器中工作得不那么好。容器与VM或裸机有一些区别。例如,由于缺少init进程,某些容器出现zombie process问题。关于其他差异,您可以阅读here

Docker对无状态应用程序有很大的好处,但是一些升级的遗留应用程序在容器内部工作效果不是很好,在生产中使用它之前应该进行良好的测试。