在VPS上使用Portainer的Docker为您提供了预装的Linux容器运行时、Docker Compose和用于管理自托管服务器的Web界面。 VoyraCloud应用程序镜像消除了初始软件安装工作,但您仍然可以控制容器、发布的端口、应用程序数据、更新、安全性、备份和VPS的容量。
TL;DR
- VoyraCloud Docker + Portainer镜像包括Docker引擎、Docker CLI、containerd、Buildx、Docker Compose插件和Ubuntu 24.04 LTS上的Portainer社区版。
- Portainer并未直接暴露在公共互联网。请从VPS资源页面复制SSH隧道命令,保持隧道打开,并访问
https://127.0.0.1:9443。 - 您需要自己创建第一个Portainer管理员。VoyraCloud不提供默认的用户名或密码。
- 由于其初始HTTPS证书是自签名的,因此在本地Portainer URL上会出现浏览器警告。浏览器信任的HTTPS和公共管理域名不包括在内。
- Portainer访问Docker套接字并可以控制主机。将Portainer管理员访问权限和Docker组成员资格视为根级权限。
- Docker发布的端口可能会绕过预期的UFW行为。请检查每个Compose
ports条目,并通过Docker支持的防火墙路径强制执行容器流量策略。 - Docker卷、Compose文件、应用程序数据库和Portainer配置需要单独的备份覆盖。仅仅备份Portainer并不会备份您的容器或应用程序数据。
- 最低合格计划运行包含的工具和轻量级验证工作负载;它不保证任意应用程序堆栈适合。
VoyraCloud Docker + Portainer镜像是什么?
VoyraCloud Docker + Portainer镜像是一个自我管理的Ubuntu VPS,准备了运行和操作容器所需的核心工具。它旨在为希望在不从空白操作系统安装Docker和Portainer的情况下,获得可重复的单服务器容器环境的开发人员和小团队提供服务。
Docker引擎在服务器上运行容器。Docker Compose在YAML文件中描述多容器应用程序。Portainer社区版或Portainer CE提供了一个基于浏览器的界面,用于查看和管理本地Docker环境。
这仍然是一个VPS,而不是一个托管的容器平台。您获得根级服务器控制和持久存储,而应用程序架构和操作仍然是您的责任。
| 层 | 功能 | 交付后谁管理 |
|---|---|---|
| Ubuntu主机 | 提供操作系统、存储、网络和系统服务 | 您 |
| Docker引擎 | 运行镜像、容器、网络和卷 | 您 |
| Docker Compose插件 | 定义和操作多容器项目 | 您 |
| Portainer CE | 通过Web UI管理本地Docker环境 | 您 |
| VoyraCloud应用程序镜像 | 提供经过测试的起始环境 | VoyraCloud在资源创建时 |
| 您的应用程序堆栈 | 包含您的网站、API、数据库、工作者和其他服务 | 您 |
该镜像非常适合单主机应用程序堆栈、内部开发服务、小型API、自动化系统或一组轻量级服务。例如,您可以使用Compose定义应用程序、数据库和内部网络,然后使用Portainer检查容器和日志。我们的自托管n8n指南展示了通常在容器中运行的持久应用程序工作负载。
镜像包含和不包含什么?
该镜像包括本地Docker管理所需的开源服务器组件,但不包括商业应用程序、托管操作或付费容器管理功能。了解这一边界可以防止部署后出现意外。
| 包含 | 不包含 |
|---|---|
| Ubuntu 24.04 LTS | Docker桌面 |
| Docker引擎和Docker CLI | Portainer商业版 |
| containerd和Buildx插件 | 商业版许可或功能 |
| Docker Compose插件 | 示例商业堆栈或预部署应用程序 |
| Portainer社区版 | 注册表、Git、云或第三方凭证 |
| Portainer中的本地Docker环境 | 公共Docker守护进程TCP端点 |
| 持久的Docker和Portainer存储 | 自动应用程序备份 |
| Docker和Portainer的重启配置 | 自动受信任的HTTPS或域名 |
| 通过SSH隧道安全访问Portainer | 自动软件或容器镜像更新 |
| 创建VPS时记录的版本 | 商业Docker或Portainer支持 |
交付的版本是在创建资源时测试的稳定组合。如果您稍后自己升级Docker、Compose或Portainer,则在VoyraCloud资源信息中显示的版本不会成为实时软件清单。
该镜像也不提供高可用性、Kubernetes、Docker Swarm集群或多节点编排。Portainer CE可能会暴露超出本地独立引擎的技术控制,但它们在上游界面中的存在并不意味着VoyraCloud已配置或支持这些环境。
如何从VoyraCloud应用程序镜像开始?
正确的启动路径是创建一个合格的VPS,并使用Docker + Portainer镜像,打开其应用程序详细信息,并通过SSH隧道初始化Portainer。您无需在到达第一个管理员屏幕之前安装Docker或运行Portainer安装命令。
1. 选择Docker + Portainer镜像
从合格的VoyraCloud Linux VPS购买流程中选择镜像,并根据您打算运行的应用程序调整服务器大小。 VoyraCloud云VPS是用于网站、API、开发工具和自托管服务的通用选择。
住宅IP VPS仅在合法的容器化工作负载特别受益于稳定的住宅网络身份时才是替代方案。住宅网络并不会使Docker更快、更安全或更易于操作。
2. 等待资源创建
在尝试访问Portainer之前,请等待资源可用。成功的镜像部署意味着Docker守护进程、Docker Compose插件和Portainer CE通过了镜像健康检查。这并不意味着应用程序堆栈已被部署。
没有示例商业容器、注册表帐户、Git凭证或Portainer管理员为您创建。环境从干净的状态开始,以便您可以定义其目的。
3. 复制SSH隧道命令
打开VPS资源页面并复制在应用程序部分显示的SSH隧道命令。它使用与您的资源关联的实际SSH用户名、SSH端口和服务器地址。
该命令遵循以下结构:
ssh -p {ssh_port} -L 9443:127.0.0.1:9443 {ssh_user}@{server_ip}
从您自己的计算机运行它,并保持终端会话打开。隧道将您的本地端口9443映射到绑定到服务器回环接口的Portainer HTTPS服务。关闭SSH会话将关闭隧道。
不要将回环绑定替换为公共9443暴露作为快捷方式。Portainer可以控制主机上的容器、网络、卷、镜像和堆栈,因此其管理界面应视为高权限服务器接口。
4. 打开本地Portainer URL
在隧道连接后,在本地浏览器中访问https://127.0.0.1:9443。您可能会看到证书警告,因为Portainer最初使用的是自签名的HTTPS证书。连接是在您经过身份验证的SSH隧道内进行的,但证书并未由浏览器信任的公共证书颁发机构签名。
检查证书警告,并确认您通过隧道打开了确切的本地URL。应用程序镜像不包括域名或自动公共HTTPS。
5. 创建第一个管理员
在官方首次使用屏幕上创建您自己的Portainer管理员,并使用唯一的强密码。VoyraCloud不预先创建、存储或提供默认的Portainer帐户。
在启动Portainer后,请及时完成初始设置。Portainer对未初始化实例使用安全超时。如果设置屏幕停止监听,请通过SSH连接到VPS并运行资源详细信息中显示的恢复命令:
sudo docker restart portainer
重新连接SSH隧道,重新打开https://127.0.0.1:9443,并立即完成管理员创建。固定的容器名称和恢复命令是VoyraCloud镜像验收测试的一部分;请勿替换为猜测的容器名称。
初始化后,请确认本地Docker独立环境可用。此时,您可以检查空主机,但仍需提供自己的Compose项目或容器配置。
6. 部署受控的第一个工作负载
从一个小的Compose项目开始,您了解其端口、卷、内存使用和恢复行为。将Compose文件保存在记录的服务器目录或没有明文秘密的版本控制库中。
在部署之前:
- 固定应用程序镜像版本,而不是依赖浮动的
latest标签。 - 识别每个持久路径,并分配命名卷或故意绑定挂载。
- 除非确实需要远程访问,否则将数据库放在内部Docker网络上。
- 仅发布用户必须访问的端口。
- 根据应用程序行为设置重启策略。
- 在适当的地方添加CPU、内存和日志保留限制。
- 决定数据将如何备份和恢复。
有关更广泛的主机操作基线,请使用VPS管理指南与此应用程序特定文档一起参考。
为什么Portainer访问限制在SSH隧道内?
Portainer访问受到限制,因为它与Docker套接字的连接使其对服务器具有广泛的控制权。Portainer管理员可以创建特权容器、挂载主机路径、读取应用程序设置、修改网络和停止工作负载。
本地Portainer容器连接到Docker Unix套接字,以便管理独立引擎。该镜像中不公开未经身份验证的TCP API,您不应在如2375或2376等端口上启用它,仅仅是为了使远程管理更容易。
Docker自己的安全文档将默认守护进程接口描述为非网络化的Unix套接字。如果您需要从另一台机器访问命令行,请使用基于SSH的访问或适当设计的TLS配置,而不是公共未加密的套接字。
同样的权限警告适用于Linux docker组。Docker文档指出,成员资格授予根级权限。该镜像不会自动将普通登录用户添加到该组;除非您已评估并接受更改组成员资格的安全影响,否则请使用sudo docker ...。
您可以稍后将Portainer放在公共域名上吗?
您可以稍后建立公共管理路径,但这是一项用户管理的生产更改,而不是默认镜像功能。合适的设计需要您控制的域名、浏览器信任的TLS、访问策略和为Portainer服务配置的反向代理。
保持管理路径私密或严格限制。公共主机名与HTTPS保护传输,但仅有HTTPS并不能使管理界面低风险。如果基于隧道的访问满足您的工作流程,保留它会更简单。
Docker端口如何与VPS防火墙交互?
Docker发布的容器端口即使在您期望UFW阻止它们时也可能可达。Docker为桥接网络创建网络地址转换和转发规则,Docker的官方Ubuntu文档警告说,发布的容器端口可能会绕过UFW或firewalld规则。
每当Compose文件包含如下条目时,这一点很重要:
ports:
- "8080:80"
如果没有主机地址限制,Docker通常会在所有主机接口上发布该端口。因此,该服务可能会在公共VPS地址上变得可达。
在部署之前使用以下规则:
- 将每个Compose
ports条目视为公共暴露决策。 - 将管理或仅限本地的服务绑定到
127.0.0.1,例如127.0.0.1:8080:80。 - 避免发布数据库、缓存、消息代理或内部API端口。
- 检查实际监听器并测试来自单独外部网络的可达性。
- 在需要源限制时,在
DOCKER-USER链中应用Docker兼容的过滤。 - 在没有完整替换设计的情况下,不要禁用Docker的防火墙管理;Docker警告说,这可能会破坏容器网络。
Portainer自己的9443服务已经由VoyraCloud镜像绑定到回环。稍后由您的应用程序容器发布的端口是您的责任。仅有绿色的UFW状态不足以证明容器端口是私有的。
重启后哪些数据会保留?
Docker对象和Portainer配置在正常的VPS重启后会保留,但只有放置在持久存储中的应用程序数据才能可靠地存活容器替换。正在运行的容器的可写层不应被视为业务数据的持久来源。
该镜像保留VPS磁盘上的主机Docker数据、命名卷、网络、镜像、容器和Portainer数据。Portainer中存储的设置、用户、环境元数据和堆栈定义在普通重启后仍然可用。只有在其配置的重启策略要求时,容器才会重启。
使用此持久性模型:
| 数据 | 推荐位置 | 原因 |
|---|---|---|
| 数据库记录 | 命名卷加上数据库原生备份 | 容器替换不能删除记录 |
| 上传的文件 | 命名卷或记录的绑定挂载 | 上传需要独立的备份覆盖 |
| Compose文件 | 记录的主机目录或私有库 | 部署必须是可重现的 |
| 环境值 | 受限文件或秘密系统 | 将凭证保留在镜像和公共Git之外 |
| Portainer配置 | Portainer数据卷 | 保留用户、设置和堆栈元数据 |
| 日志 | 受限的Docker日志或专用日志存储 | 防止不受控制的磁盘增长 |
持久性并不是备份。VPS磁盘故障、意外删除、管理员帐户被攻破或破坏性更新都可能影响容器和本地卷。
您应该如何备份Docker和Portainer?
一个可用的备份计划涵盖应用程序一致数据、Docker卷或绑定挂载、Compose定义、秘密引用和Portainer配置的单独恢复步骤。将恢复副本存储在VPS外部,并在新环境中测试它们。
Docker文档提供了备份和恢复卷的程序,但通用归档并不总是应用程序一致的。数据库通常应在进行卷级复制之前使用其原生转储或备份工具。持续写入的应用程序可能需要维护窗口或快照程序。
Portainer的官方备份涵盖Portainer自己的数据库、配置、访问控制、环境元数据和Portainer存储的堆栈文件。它不备份管理的容器、Docker镜像、卷、绑定挂载或其中的应用程序数据。
一个实用的备份集包括:
- 每个有状态服务的数据库原生转储。
- 在需要的地方复制命名卷或绑定挂载数据。
- Compose文件和部署文档。
- 安全存储的环境文件或可恢复的秘密。
- 如果您添加它们,则反向代理和证书配置。
- Portainer配置备份。
- 书面恢复顺序和在另一台VPS上的恢复测试。
应用程序镜像不会自动安排这些备份。Portainer CE配置备份不应与Portainer商业版功能或外部管理备份服务混淆。
谁负责更新?
在VPS交付后,您负责更新。VoyraCloud不会自动升级主机操作系统、Docker引擎、Docker Compose、Portainer CE或您容器使用的应用程序镜像。
有意识地更新每一层:
| 层 | 安全更新方法 |
|---|---|
| Ubuntu | 应用安全更新,检查重启要求,并在之后验证Docker |
| Docker引擎和Compose | 查看发布说明,确认兼容性,并测试软件包升级 |
| Portainer CE | 首先备份Portainer,并遵循其支持的升级路径 |
| 应用程序镜像 | 固定版本,阅读上游说明,备份数据,拉取、重建并验证 |
| 数据库 | 使用供应商支持的迁移和回滚过程 |
不要对有状态的生产容器进行盲目的自动更新。更新的镜像可能包含数据库模式更改或配置更改,这使得回滚变得困难。Portainer还警告说,更新的数据库模式可能与旧的Portainer版本不兼容,这就是为什么预更新备份很重要。
您需要多少VPS容量?
容量取决于您的应用程序容器,而不仅仅是Docker和Portainer。最低合格的VoyraCloud配置旨在运行包含的工具和轻量级验证工作负载;这并不保证任何Compose项目都适合。
使用工作负载测量来选择CPU、内存和磁盘:
| 工作负载模式 | 主要容量压力 | 规划说明 |
|---|---|---|
| 一个小的无状态API | 流量高峰期间的CPU和内存 | 留出更新和重启的余地 |
| Web应用程序加数据库 | 内存、磁盘延迟和备份空间 | 数据库缓存和转储需要额外空间 |
| 多个服务 | 聚合内存和日志增长 | 总和实际高峰,而不是闲置使用 |
| 浏览器自动化 | 内存、共享内存和CPU突发 | 将重型浏览器作业与关键服务隔离 |
| 构建工作负载 | CPU、磁盘和镜像层增长 | 小心清理缓存并监控可用空间 |
| 媒体或数据处理 | CPU、RAM、临时磁盘和网络 | 根据高峰作业而不是平均闲置使用进行调整 |
监控主机内存、负载、磁盘使用、inode使用、Docker日志增长、卷增长和容器重启循环。Portainer仪表板方便检查,但不能替代警报或容量规划。
如果一台服务器成为收入关键工作负载的单点故障,迁移到更大的VPS并不会创造高可用性。弹性的多节点架构、外部备份、故障转移和操作监控是独立项目。
常见错误
最常见的错误是暴露管理服务、丢失持久数据和低估容器UI背后的操作工作。
- 不要将Portainer
9443或Docker API直接暴露在公共互联网。 - 不要假设自签名证书提供浏览器信任的公共HTTPS。
- 不要让普通用户访问Portainer或Docker组。
- 不要将Docker套接字挂载到普通应用程序容器中。
- 除非需要并且得到保护,否则不要发布数据库或内部服务。
- 不要仅依靠UFW来限制Docker发布的端口。
- 不要仅将重要数据保留在容器可写层中。
- 不要将Portainer备份视为应用程序卷的备份。
- 不要对有状态的生产服务使用浮动镜像标签。
- 在没有备份和回滚计划的情况下,不要更新数据库或Portainer。
- 不要假设最小合格计划可以运行每个容器工作负载。
- 不要期望Docker桌面、Portainer BE、商业支持、自动备份、自动HTTPS、Kubernetes或高可用性来自该镜像。
对于涉及浏览器的工作负载,容量和网络身份增加了额外的约束。在将浏览器自动化与通用容器主机结合之前,请查看为什么Playwright在VPS上被阻止。
常见问题解答
在VPS上使用Portainer的Docker是什么?
在VPS上使用Portainer的Docker意味着在您控制的虚拟Linux服务器上运行Docker引擎和Portainer CE。Docker运行容器,Compose定义多服务应用程序,Portainer提供本地引擎的Web界面。您仍然负责应用程序配置、安全性、数据、更新、备份和容量。
我需要手动安装Docker或Portainer吗?
不,VoyraCloud应用程序镜像提供预安装的Docker引擎、Docker Compose和Portainer CE。在资源创建后,使用资源页面上的SSH隧道命令并完成Portainer的第一个管理员设置。您仍然需要安装或部署自己的商业应用程序。
为什么我无法在公共VPS IP上打开Portainer?
Portainer故意绑定到服务器回环接口,因为它对Docker具有高权限控制。通过SSH隧道连接并在本地打开https://127.0.0.1:9443。这将管理端口保持在公共互联网之外。
为什么浏览器会警告Portainer证书?
初始Portainer端点使用自签名证书,因此浏览器无法通过公共证书颁发机构验证它。确认您通过SSH隧道使用的是确切的本地URL。公共域名和浏览器信任的证书是可选的用户管理附加项,而不是默认包含的内容。
该镜像是否包括Docker桌面或Portainer商业版?
不,该镜像仅包括服务器端Docker引擎和Portainer社区版。它不包括Docker桌面、Portainer商业版、付费许可证、商业版功能或供应商商业支持。
Portainer公开暴露是否安全?
直接公开暴露不是默认设置,并且不建议作为快捷方式。Portainer可以通过Docker套接字控制Docker主机。继续使用SSH隧道,或者自己构建一个经过仔细限制的域、受信任的TLS、反向代理和访问策略。
UFW是否保护每个Docker容器端口?
不,Docker发布的端口可以绕过用户通常期望的UFW路径。检查Compose端口映射,将私有服务绑定到回环,从外部网络进行测试,并在适当的地方使用Docker支持的DOCKER-USER链进行过滤。
VPS重启后哪些内容会保留?
Docker和Portainer服务在重启后恢复,持久的Docker对象、卷和Portainer配置仍保留在VPS磁盘上。应用程序容器根据其自己的重启策略重启。仅存储在临时容器层中的数据并不是可靠的持久性设计。
Portainer会备份我的应用程序数据吗?
不,Portainer配置备份不包括管理的容器、卷、绑定挂载或应用程序数据。将数据库、卷、Compose文件、秘密和Portainer配置作为一个恢复计划的不同部分进行备份。
自动更新、备份、HTTPS或高可用性是否包括在内?
不,这些操作不包括在应用程序镜像中。您管理操作系统更新、Docker和Portainer升级、容器镜像更新、应用程序备份、域名和受信任的HTTPS设置、监控以及任何高可用性架构。
最低合格VPS是否足够支持我的堆栈?
最低合格的VPS仅足够支持包含的工具和在镜像验收期间使用的轻量级工作负载。您所需的计划取决于您部署的应用程序的CPU、内存、磁盘、流量、数据库、日志、构建和峰值行为。
结论
在VPS上使用Portainer的Docker是您希望拥有一个自我管理的单服务器容器环境,同时具备Compose和Web界面的实用起点。VoyraCloud应用程序镜像消除了初始安装工作,并提供了经过测试的本地管理路径,同时将最重要的决策留在您手中。
通过SSH隧道安全初始化Portainer开始。然后部署一个受控的Compose项目,仅发布必要的端口,将状态放在持久存储中,创建离线备份,并在工作负载变得关键之前测试恢复。
探索VoyraCloud Docker + Portainer应用程序镜像以从预安装环境开始。

