用于非代码部署的Docker?

我正试图帮助系统pipe理员组减less他们pipe理的项目的服务器和服务停机时间。 他们最大的问题是他们不得不closures一个服务,安装升级/configuration,然后重新启动它,并希望它的工作。

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

我正在尝试帮助的团队正在使用需要大量configuration和pipe理的供应商软件。 docker工人仍然可以在这种情况下使用? 我们可以在容器上安装任何随机软件吗? 然后保存在私人存储库,升级版本等?

这是一个Windows环境,如果这有什么区别。

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

docker工人仍然可以在这种情况下使用?

是的,但取决于应用程序。 应该可以安装无头,还有其他一些非常特殊的东西。 (EG:与第三方服务器通话以获取许可证可能会产生问题)

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

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

然后保存在私人存储库,升级版本等?

是。

这是一个示例pipe道:

为操作系统创build一个Dockerfile,以及安装应用程序的步骤。 (应该是无头的)

build立图像(在这一点上,它被称为图像,而不是一个容器)

通过创build本地容器在本地testing映像。 这个容器是什么configuration数据,如环境variables,它需要持久数据的卷等等。

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

  1. 让您的构build服务器创build映像并将其发布到内部dockerregistry(最佳实践)
  2. 让您的本地开发人员将其发布到内部dockerregistry

此时,您的下一级环境可以从Dockerregistry中拉下图像,configuration它们并创build容器。

总之,这将需要大量的手肘润滑脂,但是可能的。

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

通常是的,但是您可能会遇到许多遗留软件的问题,这些软件是在裸机上开发的。

  • 起初可能是持久性问题,但是可以用卷来解决。
  • 在第二个程序,在完整的操作系统上运行良好,可以在容器中工作不太好。 容器与虚拟机或裸机有一些区别。 例如,由于缺lessinit进程,一些容器有僵尸进程问题。 关于其他的差别,你可以在这里阅读

Docker对于无状态应用程序有很大的好处,但是有些升级的旧应用程序可能不适合内部容器,在使用它之前应该先testing好。