我有一台运行多个容器的服务器
我在家庭目录中有这样的文件夹结构
namespace angular
/docker/dockerfiles/nginx/Dockerfile
/docker/dockerfiles/nginx/README
/docker/dockerfiles/nginx/NOTES
/docker/dockerfiles/portainer/Dockerfile
...
/docker/dockerfiles/rabbitmq/Dockerfile
/docker/volumes/nginx/sites/...
/docker/volumes/nginx/logs/...
/docker/volumes/portainer/
...
/docker/volumes/rabbitmq/
包含docker容器使用的所有文件,它们已映射到容器中,这些容器未使用真正的Docker卷,我真的想避免使用它们。
我还有3个Python文件:
/docker/volumes/
containers_info.py
containers_build.py
containers_run.py
基本上是一本字典,其中包含有关容器的基本信息,例如容器的版本和构建日期(如果应该在构建过程中将其排除/包含在容器中,如果应将其包含/排除在其中)跑步通行证
containers_info.py
导入containers_build.py
并检查应构建哪些容器,从containers_info.py
读取相应的Dockerfile,然后使用Docker Python API构建该容器,收集一些统计信息并创建摘要,通知失败等。
/docker/dockerfiles/.../Dockerfile
还将导入containers_run.py
并检查应运行哪些容器。它包含以下信息:要映射到哪些卷,要使用哪些端口,基本上所有要在YAML文件中描述容器的内容,以及对当前正在运行的容器的一些管理。
它包含多个片段,例如
containers_info.py
现在,我想摆脱这种自定义解决方案,使用开放源代码,这将使我可以将此方法扩展到多台计算机。目前,我可以在服务器之间复制〜/ docker /并执行修改后的脚本以获得所需的计算机,但是我认为Docker Swarm或Kubernetes旨在解决这些问题。至少在某种程度上,这就是我的印象。
我的Python解决方案是在我学习Docker时诞生的,通过Docker Python API对其进行自动化对我学习Dockerfile有很大帮助,因为我可以使整个过程自动化,而Dockerfile中的错误只会意味着一点点的浪费时间
这种Python脚本方法的另一个重要优点是,如果能够在同一台机器上自动创建数十个Web服务器实例(假设这样做很有意义),并且能够使Nginx完美适应这一变化,我就可以自动创建数十个Web服务器实例(动态添加/删除代理,重新加载配置。)
那么,我应该开始研究哪种技术,以便用它替换当前的系统?另外,我不打算运行很多机器,最初只运行两台(main + backup),但是在任何时间点,我都希望能够添加更多的计算机并在其中分配负载,并且只需更改即可配置文件中的一些设置。
当前解决这些问题的方法是什么?
答案 0 :(得分:0)
在这种情况下可以使用许多工具。如果您仅打算使用一台计算机,则docker-compose
可能是您正在寻找的解决方案。它使用yaml
样式的makefile并支持相同的构建上下文(标准Docker和kubernetes也是如此)。轻松运行Pod或容器的多个实例确实很容易,仅使用--scale
标志就可以消除很多麻烦
如果您打算在多台计算机上运行它,我想说kubernetes
可能是最好的选择。确实为此做好了准备。诚然,我在Swarm
方面没有很多经验,但这与我的理解类似。这样做的好处是kubernetes
也可以为您处理负载平衡,而docker-compose
则不能,并且您必须为此使用某种代理(例如Nginx)。这并不可怕,但如果您之前没有做过类似的事情,那也不是最简单的