# 容器管理与应用商店

> 文档更新：2026-09-27 ｜ 适用版本：v3 ｜ 功能位置：「应用商店」菜单 → 应用安装（/app）、容器管理（/node/container）；容器管理页可进入镜像/网络/存储卷管理

## 这组功能是干什么的

在接入面板的服务器上运行 Docker 容器：可以从**应用商店**一键安装预配置好的应用（WordPress、MySQL、Redis 等），也可以通过**容器编辑器**自由创建和调整容器，并对运行中的容器做全生命周期管理（启停、终端、日志、备份、删除）。镜像、网络、存储卷也有专门的管理页。

## 应用商店

浏览预配置的应用模板，支持搜索和分类筛选。选择应用、选好目标节点后进入容器编辑器，模板已预填好镜像、环境变量、端口等（含自动生成的密码），确认或调整后安装即可。

## 容器编辑器

创建/更新容器的核心表单，7 个分区：基础信息、应用字段（仅应用商店应用）、环境变量、端口映射、卷挂载、资源限制、高级设置。入口共有五个：新建容器（空表单）、变更容器（输入容器名加载现有配置）、导入命令（粘贴 `docker run` 命令自动解析成表单）、容器列表「编辑」、应用商店安装。

### 卷挂载（与标准 Docker 用法不同，重点）

面板创建的所有容器都**统一托管数据目录**：挂载时只需要填容器内路径（如 `/var/lib/mysql`），宿主机路径由面板自动分配，存放在服务器 `data/www/<容器名>/` 目录下。**任何面板创建的容器都不能自定义宿主机挂载路径**——这是有意的安全设计，避免一个容器挂载到系统关键目录后出问题波及其他容器。

两种模式：

- **普通模式**：每个挂载项填一个容器内路径，各自对应宿主机的一个子目录；
- **根挂载模式**：把 `data/www/<容器名>/` 整个目录映射到容器内的一个路径（如 `/data/caddy`），仅一项。

因此容器产生的数据都在服务器这个固定目录下，备份、迁移、清理时去这里找。确有特殊挂载需求，请通过 SSH 登录服务器直接用 docker 命令操作（注意：此类容器在面板中无法编辑管理）。

### 端口映射

- **仅本地**：绑定 127.0.0.1，只有服务器本机能访问（数据库、内部服务推荐用这个，更安全）；
- **公网访问**：绑定 0.0.0.0，外网可通过服务器 IP:端口 访问；
- 宿主机端口留空则随机分配一个。

### 注意事项

更新模式下，**不是面板创建的容器无法编辑**（可以在 Docker 里自行管理，或删除后用面板重建）。

## 容器列表

按节点查看运行中的容器，行内操作：启动/停止/重启、终端、日志、编辑、文件管理、备份、删除。删除容器时可选择是否一并清理挂载的数据目录——勾选后数据不可恢复，务必确认。

> **容器终端须知**：终端打开后默认在容器根目录 `/`。Node.js / Bun / Python / Go / Java 等运行环境容器的应用文件统一在 `/app` 目录，手动执行命令前先 `cd /app`（如 `cd /app && npm run build`）；PHP 容器基于 apache-php 镜像不适用此约定，数据库等其他容器的工作目录也各不相同，进终端后先确认要操作的内容在哪里。

## 镜像 / 网络 / 存储卷

- **镜像**：拉取镜像（可选加速）、清理无用镜像（dangling）、删除镜像（被容器引用的删不掉）；
- **网络**：创建自定义网络，多容器互联后用容器名互相访问；系统网络和面板自建网络不可删除；
- **存储卷**：创建命名卷；被引用中的卷无法删除。

## 危险操作一览

| 操作 | 风险 |
|---|---|
| 删除容器时勾选清理数据目录 | 挂载数据不可恢复 |
| host 网络模式 | 容器无网络隔离，直接使用宿主机网络栈 |
| 关闭资源限制 | 容器可能耗尽宿主机资源，拖垮整台服务器 |
| 重启策略设为 always | 出错后无限重启，可能掩盖真实问题 |

## 常见疑问

**问：为什么挂载不能填宿主机路径？**
面板创建的容器统一托管数据目录（见上文"卷挂载"），这是防止容器间相互影响的安全设计，不是限制缺陷。绝大多数场景不需要自定义宿主机路径；确有特殊需求用 SSH + docker 命令操作，但该容器随之脱离面板管理。

**问：容器的数据实际存在服务器哪里？**
`data/www/<容器名>/` 目录下。删除容器时勾选"清理挂载数据目录"会删掉这里的内容，不可恢复。

**问：端口映射好了，外网还是访问不了？**
按顺序检查：① 端口映射选的是"公网访问"还是"仅本地"——仅本地外部本来就访问不了；② 服务器防火墙/安全组是否放行该端口（可用面板"端口管理"配置）；③ 服务本身是否在监听。

**问：已经用 docker 命令跑起来的容器，面板能管理吗？**
容器列表能看到，但编辑等面板功能只对面板创建的容器开放。建议重要业务容器统一用面板管理，便于备份与后续调整。

**问：怎么把我现有的 docker run 命令搬进面板？**
容器编辑器 →「导入命令」，粘贴完整 `docker run` 命令会自动解析成表单，确认后创建。

## 指导用户时的注意点

- 涉及挂载的指导，先确认用户理解"只填容器内路径"的面板机制，防止照搬网上教程的 `-v` 写法报错。
- 数据库类、内部服务类容器建议"仅本地"端口；指导用户开公网端口时提醒配合防火墙规则。
- 用户报"容器起不来"时，先看容器日志（列表行内有入口），再看镜像名/端口冲突/资源限制。
- 删除容器与清理数据目录是两件事，指导删除前确认用户是否需要保留数据。
