Docker 管理
Docker 管理是 MSM 的容器运维工作台,可管理本机 Docker 引擎以及最多三个独立 Agent 子节点。资源页面会随顶部的“管理目标”切换,不同目标的数据彼此独立。
仅管理已授权主机
连接 Docker Socket 或 Agent 往往等同于获得目标主机的高权限控制能力。请仅注册自有或已明确授权节点,不得将 MSM 用于未授权容器、镜像、数据卷或主机的访问与操作。
该模块属于 Pro 功能,并受 系统设置 → 功能开关 → Docker 管理 控制。许可证还需要有效的本机授权证明。
页面顶部固定显示当前管理目标、引擎在线 / 离线状态、引擎版本和最近同步时间,并提供手动连接检查。目标概览与节点列表每 30 秒自动刷新;执行写操作前仍应再核对一次当前目标。
当前两级导航如下:
| 一级区域 | 页面 |
|---|---|
| 概览 | 概览 |
| 工作负载 | 容器、应用栈、Compose(仅管理员) |
| 资源 | 镜像、存储卷、网络 |
| 监控维护 | 事件、容器更新、系统 |
| 节点 | 节点 |
Docker 权限边界
能够操作 Docker 通常等同于能够控制目标主机上的容器工作负载。只向可信用户开放管理员和操作员角色,并保护 Docker Socket、Agent 凭据和 MSM 管理界面。
用户角色
| 角色 | 能力 |
|---|---|
| 查看者 | 查看资源、状态、事件和详情 |
| 操作员 | 查看并执行常规容器 / 镜像 / 网络 / 存储操作 |
| 管理员 | 节点注册、凭据轮换、Compose 等高权限管理操作 |
前端会隐藏无权操作,后端仍会再次校验权限;不能以“按钮可见”作为授权依据。
管理目标
本机 Docker
MSM 后端必须能够访问 Docker Engine。常见部署需要挂载 Docker Socket 或配置有效的 Docker Host。
如果概览显示“引擎不可用”:
- 确认 Docker 服务正在运行
- 检查 MSM 进程是否有权限访问 Docker Socket
- Docker 部署检查 Socket 是否正确挂载
- 刷新管理目标连接状态
挂载 Socket 会给 MSM 很高的主机控制权限,只应在可信环境使用。
独立 Agent 子节点
目标主机只需运行轻量 msm-docker-agent,不需要安装完整 MSM。进入 Docker 管理 → 节点,可选择两种接入方式:
Agent 使用独立构建的镜像,与 MSM 主镜像分开发布。稳定版镜像为 msmbox/msm-agent:latest,也可用 msmbox/msm-agent:<MSM版本> 固定版本。 Beta 版使用 msmbox/msm-agent:beta-latest 或 beta-<MSM版本>; 页面生成的安装命令默认拉取稳定版 latest,使用 Beta 控制端时应选择匹配的 Beta 镜像。镜像支持 Linux amd64、arm64 和 arm/v7,由 msm-wiki 的发布工作流构建。
| 方式 | 连接方向 | 适用场景 |
|---|---|---|
| 主动回连 | Agent 主动连接 MSM 控制端 | 子节点不便开放入站端口,推荐优先使用 |
| HTTPS 直连 | MSM 连接 Agent 地址 | 已有可信 HTTPS 地址和明确网络边界 |
主动回连
- 在控制端创建一次性接入令牌
- 填写控制端 URL 和子节点名称
- 在子节点按页面生成的命令运行 Agent
- 等待控制端显示节点在线
- 从管理目标切换到该节点验证资源
令牌文件应使用 0600 权限。Agent 完成注册后会使用独立凭据建立多路回连,不需要把监听端口暴露到公网。
HTTPS 直连
- 在子节点准备受信任的 TLS 证书
- 启动 Agent,并仅开放所需端口
- 生成一次性接入令牌
- 在 MSM 填写节点名称、HTTPS Endpoint 和令牌
- 注册后立即检查节点状态
生产环境默认要求可信 HTTPS。允许明文 HTTP 的开发开关只用于本机联调,不应进入生产配置。
页面地图
概览
显示当前目标的引擎状态、容器健康、镜像 / 网络 / 存储规模、资源趋势、磁盘占用、最近容器和常用操作。所有统计都只针对当前管理目标。
容器
- 搜索、状态筛选、表格 / 卡片视图和批量操作
- 启动、停止、重启、暂停、重命名和删除
- 查看日志、资源统计、进程、环境变量、挂载和网络
- 按权限使用终端、脚本与文件工作区
- 创建新容器并设置端口、卷、环境变量、网络和资源限制
终端、脚本、文件写入和特权容器属于高风险操作。执行前确认当前管理目标和容器名称。
镜像
- 拉取、搜索、导入、导出、打标签和删除
- 查看架构、摘要、层、环境变量和入口命令
- 从镜像创建容器
- 清理未使用标签、镜像和构建缓存
存储卷
- 创建和查看卷、驱动、挂载点及关联容器
- 区分使用中与未使用卷
- 删除或清理前检查容器依赖
网络
- 创建 bridge、macvlan 等网络
- 配置子网、网关、地址池和父接口
- 连接或断开容器
- 查看网络、容器和地址池关系
系统网络和仍连接容器的网络会阻止危险删除。macvlan 创建前应先验证父接口、子网和网关。
应用栈
- 从 YAML 或模板创建 Stack
- 保存前验证 Compose
- 部署、启动、停止、重启和删除托管 Stack
- 查看服务、容器、日志和当前 YAML
- 外部 Stack 以只读信息为主
Compose
Compose 是管理员专用工作区,用于直接校验和执行 Compose 管理操作。它与“应用栈”列表相关但权限更高;普通应用启停优先从应用栈进入,只有确认当前目标与 YAML 内容后再使用 Compose 工作区。
事件与系统
- 事件:按资源类型查看 Docker 实时事件
- 系统:查看 Engine、OS、架构、存储驱动、运行时和磁盘占用
- 更新检查:检查容器镜像是否有可确认的更新
- 清理:回收未使用资源;涉及卷时再次确认数据风险
节点凭据与生命周期
- 一次性令牌有有效期且只能使用一次
- 控制端加密保存节点凭据,Agent 端只保存所需摘要或运行材料
- 节点失联时先刷新健康状态,不要立即删除重建
- 怀疑凭据泄漏时使用管理员操作轮换凭据
- 删除节点只移除控制关系,不等于删除目标主机上的容器资源
常见问题
切换目标后数据看起来不对
先查看顶部当前管理目标和最近同步时间。每次目标切换后等待连接检测与资源刷新完成。
Agent 在线但部分操作失败
- 检查当前用户角色
- 确认 Agent 能访问 Docker Socket
- 查看响应是否提示目标能力不足
- 检查请求超时、响应大小限制和节点网络质量
清理会删除哪些内容?
清理范围取决于确认对话框中的选项。默认只处理 Docker 判断为未使用的资源;勾选卷会增加数据丢失风险,执行前应备份。