使用 Docker 在单个 VPS 上部署多个应用
2024/9/25 21:03:07
本文主要是介绍使用 Docker 在单个 VPS 上部署多个应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
虚拟专用服务器(VPS)的成本很低。你可以每月大约5美元租用一个小服务器。(这里有一些便宜的VPS提供商)
您将获得可预测的定价,强大的计算能力,并且借助 Docker,在单个服务器上运行多个应用程序变得非常容易。
但是使用 Docker 在一台机器上运行多个应用程序安全吗?一台服务器可以容纳多少个应用程序?需要注意些什么?
目录- 在单个主机上运行多个应用程序是否安全?
- 你可以在一个服务器上容纳多少个应用程序?
- 在一个服务器上托管多个应用程序的挑战
- 简化在同一台机器上运行多个应用程序的工具
- 概述
Docker 容器彼此之间以及与主机系统几乎都是隔离运行的。如果你遵循一些基本的安全最佳实践,可以在单个主机上安全地运行多个应用程序。
说归说,这比每个应用都运行在独立主机上风险更大。停机和安全漏洞可能会影响多个应用及其数据。
我遇到的主要问题是单个容器需要所有CPU和内存,导致其他所有应用程序都受到了影响。
这一切都归结于潜在故障的影响。你可能不需要为新闻聚合器或业余项目提供99.999%的正常运行时间。而且如果你不存储重要数据,数据丢失也不会造成太大损害。
这个设置适用于:
- 低风险、低流量的应用程序
- 后台任务
- 开发环境
- 家用实验室
- 独立黑客项目
- 内部工具
- 开源工具
或者简单地说:任何不需要企业级稳定性和安全性的内容。
你可以在一个服务器上部署多少个应用?显然,这取决于你的应用程序。
大致如下:
我已经在一个配备2GB内存、2个共享vCPU和40GB磁盘的VPS上运行了大约15个不同的应用(包括小型网站、API和数据库)好几个月了,没有遇到任何问题。
这是我的主机提供的最小规格的机器之一,但说句公道话,这些应用非常轻量级,几乎没有流量,因此几乎不需要任何资源。
你可以在一台服务器上运行数十个这样的小型应用程序。另一方面,如果某个应用流量增加,它也可能使你的机器过载。
没有数据就很难估算资源消耗,但也许一些简单的常识对你有帮助:
- 请求更多 = 需要更多资源
- 大量数据 = 需要更多资源。通过服务器传输图片或视频需要更多的 CPU 和内存,而处理文本或小的 JSON 对象则不需要。
- 某些算法比其他算法需要更多资源,例如加密或训练 AI 模型。
- 应用程序(如数据库)可能会为缓冲区和缓存分配内存,因此即使流量较低也会消耗大量 RAM。有时你可以对其进行微调以使用更少的资源。
在最基本的设置中,你只需要访问一个VPS,安装Docker,就可以开始了!
在单个服务器上运行多个 Docker 应用程序一旦细化了细节就会变得稍微复杂一些。这里有一些我遇到的挑战:
- 如何保持调试日志的概览
- 如何防止日志占用所有磁盘空间
- 机密管理
- 如何将应用程序和代码更改部署到服务器(CI/CD)
- 构建过程在哪里运行(需要大量资源)
- Docker 镜像存储在哪里
- 如果涉及多人如何进行访问控制
- 如何监控服务器和应用程序负载
- 如何防止镜像和 Docker 缓存占用所有磁盘空间
如果你对学习DevOps感兴趣,我鼓励你亲自投身其中,自己完成它。没有什么比实际行动更能提升你的技能了。
如果你想省去一些麻烦,有一些工具可以让你的工作变得更轻松。
简化在同一台机器上运行多个应用程序的工具Sliplane
Sliplane 是一个完全托管的容器托管解决方案,允许你在单个服务器上部署多个应用程序。如果你不想过多地处理 DevOps 事宜,这是最快和最简单的方式。与其它提供商相比,它提供了更多高级功能,包括域名、垂直扩展、SSL、安全更新等。(声明:我是该项目的联合创始人)
Dokku
Dokku 是一个开源的 PaaS 替代方案。它帮助你设置部署流水线,并提供构建和管理多个应用程序的工具。它还利用 Heroku 构建包来自动检测你的堆栈并在没有 Dockerfile 的情况下进行部署。
Portainer
Portainer 也是一个开源的容器管理平台。与 Sliplane 和 Dokku 相比,Portainer 不处理构建过程,但提供了管理更高级集群设置的功能。
对比
Sliplane | Dokku | Portainer | |
---|---|---|---|
管理多个容器 | ✅ | ✅ | ✅ |
处理构建过程 | ✅ | ✅ | ❌ |
使用 "git push" 实现持续部署 | ✅ | ✅ | ❌ |
专用构建服务器 | ✅ | ❌ | ❌ |
管理多个主机 | ✅ | ❌ | ✅ |
开源版本? | ❌ | ✅ | ✅ |
用户界面 | 网页界面 | CLI | 网页界面 |
查看容器日志 | ✅ | ❌ | ✅ |
查看服务器指标 | ✅ | ❌ | ✅ |
域名管理 | ✅ | ❌ | ❌ |
管理集群(Kubernetes, Docker Swarm) | ❌ | ❌ | ✅ |
扩展服务器 | ✅ | ❌ | ❌ |
自动备份 | ✅ | ❌ | ❌ |
自动安全更新 | ✅ | ❌ | ❌ |
Docker 允许在单个服务器上托管多个应用程序,使其成为部署小型项目的经济高效的解决方案。
通常使用 Docker 在单个服务器上运行多个应用程序是安全的,但应将其限制为低流量、低风险的应用程序。
根据你运行的应用类型,你可以在一台服务器上运行数十个项目。
如果你想要深入了解 DevOps,你可以选择自托管这条路。否则,你可以使用 Sliplane、Dokku 和 Portainer 这样的工具来简化流程。
作为一项完全托管的解决方案,Sliplane 是最快和最简单的方式。
Dokku 是一个开源项目。它的重点在于通过简单的 "git push" 操作来简化部署过程。用户界面是命令行界面(CLI)。
Portainer 也提供了开源版本。与 Sliplane 和 Dokku 相比,它缺少部署管道。它自带一个基于 web 的 UI,并提供了一些管理更高级集群设置的功能。
这篇关于使用 Docker 在单个 VPS 上部署多个应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Docker部署资料:新手入门教程
- 2024-12-19Docker部署实战:新手入门教程
- 2024-12-19Docker部署教程:新手入门详解
- 2024-12-09云原生周刊:在Docker上部署大语言模型
- 2024-12-05Docker教程:新手快速入门指南
- 2024-12-05Docker项目实战:新手教程与案例解析
- 2024-12-04Docker入门教程:快速掌握基础操作
- 2024-12-04Docker入门教程:轻松搭建你的第一个容器化应用
- 2024-12-04Docker-Compose 入门教程:全面解析基础命令与应用场景
- 2024-12-04Docker入门:新手必读的简单教程