发布于 2025-12-10 3 阅读
0

使用 Docker 在单个 VPS 上部署多个应用程序

使用 Docker 在单个 VPS 上部署多个应用程序

虚拟专用服务器 (VPS) 的成本很低。您可以每月仅需 5 美元租用一台小型服务器。(您可以在这里找到一些价格实惠的 VPS 提供商)

您可以获得可预测的定价、高计算能力,并且使用Docker在单个服务器上运行多个应用程序变得非常容易。

但是,使用 Docker 在一台机器上运行多个应用程序安全吗?一台服务器可以容纳多少个应用程序?需要注意什么?

目录

在单个主机上运行多个应用程序安全吗?

Docker 容器彼此之间以及与主机系统之间几乎完全隔离。如果您遵循一些基本的安全最佳实践,那么在单个主机上运行多个应用程序是安全的。

话虽如此,这无疑比在专用主机上运行每个应用程序的风险更大。中断和安全漏洞可能会影响多个应用程序及其数据。

我遇到的主要问题是单个容器需要所有 CPU 和内存,所有其他应用程序都受到此问题的影响。

一切都归结于潜在故障的影响。对于新闻聚合器或业余项目来说,你可能不需要 99.999% 的正常运行时间。而且,如果你不存储重要数据,数据丢失也不会造成太大的损失。

此设置适用于:

  • 低风险、低流量的应用程序
  • 后台作业
  • 开发环境
  • 家庭实验室
  • 独立黑客项目
  • 内部工具
  • 开源工具

或者简而言之:任何不需要企业级正常运行时间和安全性的东西。

一台服务器上可以安装多少个应用程序?

显然,这在很大程度上取决于您的应用程序。

给你一个大概的想法:

我曾在配备 2GB RAM、2 个共享 vCPU 和 40GB 磁盘的 VPS 上运行过一些小型网站、API 和数据库(总共约 15 个不同的应用程序),并且已经运行了好几个月,没有任何问题。

这是我的主机提供的最小的机器之一,但公平地说,这些应用程序非常轻量级,几乎没有任何流量,因此几乎不需要任何资源。

你可以在一台服务器上运行几十个这样的小型应用程序。另一方面,如果单个应用程序占用了大量流量,就可能导致你的机器过载。

如果没有数据,估算资源消耗非常困难。不过,以下这些简单的常识或许能帮到你:

  • 更多请求=需要更多资源
  • 数据量大 = 需要更多资源。相比处理文本或小型 JSON 对象,通过服务器传输图片或视频需要更多 CPU 和内存。
  • 有些算法比其他算法需要更多的资源,例如加密或训练人工智能模型。
  • 应用程序(例如数据库)可能会为缓冲区和缓存分配内存,因此即使流量较低也会消耗大量 RAM。有时,您可以对其进行微调,使其以更少的资源运行。

在一台服务器上托管多个应用程序的挑战

在最基本的设置中,您只需要访问 VPS、安装 Docker,然后就可以开始了!

一旦细节完善,在单台服务器上运行多个 Docker 应用就会变得有些棘手。以下是我遇到的一些挑战:

  • 如何概览调试日志
  • 如何防止日志占用所有磁盘空间
  • 机密管理
  • 如何将您的应用程序和代码更改上传到服务器(CI/CD)
  • 在哪里运行构建过程(需要相当多的资源)
  • Docker 镜像的存储位置
  • 多人参与时的访问控制
  • 如何监控服务器和应用程序负载
  • 如何防止镜像和 Docker 缓存占用所有磁盘空间

如果你正在学习 DevOps,我鼓励你全身心投入其中,亲手实现它。没有什么比行动更能提升你的水平了。

如果您想省去一些麻烦,有一些工具可以使工作变得更容易。

简化在一台机器上运行多个应用程序的工具

滑翔机

Sliplane 是一个完全托管的容器托管解决方案,允许您在单台服务器上部署多个应用程序。如果您根本不想参与 DevOps 开发,这是最快捷、最简便的选择。与其他提供商相比,它提供了更多高级功能,还包括域名、垂直扩展、SSL、安全更新等。(免责声明:我是该项目的联合创始人)

多库

Dokku 是一个开源 PaaS 替代方案。它可以帮助您设置部署流水线,并提供构建和管理多个应用程序的工具。它还利用 Heroku Buildpacks 自动检测您的堆栈并进行部署,无需 Dockerfile。

波特纳

Portainer 也开源,是一个容器管理平台。与 Sliplane 和 Dokku 相比,它不负责构建过程,但提供了管理更高级集群设置的功能。

比较

滑翔机 多库 波特纳
管理多个容器 ✅ ✅ ✅
关注构建过程 ✅ ✅ ❌
使用“git push”进行持续部署 ✅ ✅ ❌
专用构建服务器 ✅ ❌ ❌
管理多个主机 ✅ ❌ ✅
开源版本? ❌ ✅ ✅
用户界面 基于 Web 的用户界面 命令行界面 基于 Web 的用户界面
查看容器日志 ✅ ❌ ✅
查看服务器指标 ✅ ❌ ✅
域名管理 ✅ ❌ ❌
管理集群(Kubernetes、Docker Swarm) ❌ ❌ ✅
扩展服务器 ✅ ❌ ❌
自动备份 ✅ ❌ ❌
自动安全更新 ✅ ❌ ❌

概括

Docker 允许在单个服务器上托管多个应用程序,使其成为部署小型项目的经济高效的解决方案。

使用 Docker 在单个服务器上运行多个应用程序通常是安全的,但它应该仅限于低流量、低风险的应用程序。

根据您运行的应用程序类型,您可以在一台服务器上安装数十个项目。

如果您想深入研究 DevOps,可以选择自托管路线。或者,可以使用 Sliplane、Dokku 和 Portainer 等工具来简化流程。

作为一种完全托管的解决方案,Sliplane是最快捷、最简单的方法。

Dokku是开源的。它专注于通过简单的“git push”简化部署。其用户界面是 CLI。

Portainer也提供了一个开源版本。与 Sliplane 和 Dokku 相比,它缺少部署管道。它配备了基于 Web 的用户界面,并提供了一些管理更高级集群设置的功能。

鏂囩珷鏉ユ簮锛�https://dev.to/wimadev/deploy-multiple-apps-on-a-single-vps-with-docker-9j