Docker容器

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

本文主要是介绍使用 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 上部署多个应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!