我正在尝试帮助系统管理员组减少他们管理的项目的服务器和服务停机时间。他们最大的问题是他们必须关闭一项服务,安装升级/配置,然后重新启动它并希望它能正常工作。
我听说 docker 是这个问题的解决方案,但通常来自开发人员圈子,将他们的 node/python/ruby/c#/java 等应用程序部署到生产环境中。
我试图帮助的小组正在使用需要大量配置和管理的供应商软件。这种情况下还能用docker吗?我们可以在容器上安装任何随机软件吗?然后将其保存在私有(private)存储库中,升级版本等?
如果这有什么不同的话,这是一个 Windows 环境。
最佳答案
Docker 擅长无状态应用程序。您可以将它用于持久数据风格的应用程序,但需要使用卷命令。
Can docker still be used in this case?
是的,但这取决于应用程序。它应该能够 headless 安装,以及其他一些非常具体的东西。 (例如:与第三方服务器交谈以获取许可证可能会产生问题)
Can we install any random software on a container?
是的......但是:请记住,当容器重新启动时,该软件将消失。最好将其创建为镜像,然后进行部署。请参阅下面的示例。
Then keep that in a private repository, upgrade versions, etc.?
是的。
这是一个示例管道:
为操作系统创建 Dockerfile 以及安装应用程序所需的步骤。 (应该是 headless 的)
构建镜像(此时称为镜像,而不是容器)
通过创建本地容器在本地测试镜像。该容器具有配置数据,例如环境变量、所需的持久数据的卷等。
如果它满足本地开发人员的需求,那么您可以:
docker 注册表(最佳实践)
到内部 docker 注册表
那时,您的下一级环境可以从 docker 注册表中拉取镜像,配置它们并创建容器。
简而言之,这将需要大量的肘部油脂,但这是可能的。
关于Docker 用于非代码部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41641605/