Senate

存储与卷

为容器配置持久化存储

存储与卷

容器默认是临时的——容器重启时数据会丢失。使用卷和挂载在部署之间持久化数据。

概述

Senate 支持多种存储类型:

类型描述用例
VolumeDocker 管理的存储数据库、文件上传
Bind Mount主机目录挂载开发、共享文件
File Mount单文件注入配置文件、证书

Docker 服务

对于 Docker 服务,在 Storage 标签页配置存储。

添加挂载

  1. 导航到你的服务
  2. 进入 Storage 标签页
  3. 点击 Add Mount
  4. 配置挂载:

添加挂载对话框

Volume 挂载

Docker 管理的命名卷:

字段描述示例
Type选择 "Volume"volume
Source卷名称myapp-data
Destination容器路径/app/data
Read Only可选只读模式false
# 创建名为 "myapp-data" 的卷,挂载到 /app/data
Type: volume
Source: myapp-data  
Destination: /app/data

如果卷不存在会自动创建。即使容器被删除,数据也会保留。

Bind Mount

将主机目录挂载到容器:

字段描述示例
Type选择 "Bind"bind
Source主机路径/host/data
Destination容器路径/app/data
Read Only可选false
# 将主机目录 /host/data 挂载到容器 /app/data
Type: bind
Source: /host/data
Destination: /app/data

Bind mount 会将主机文件系统暴露给容器。在生产环境中谨慎使用。

File Mount

向容器注入单个文件:

字段描述示例
Type选择 "File"file
Destination容器文件路径/app/config.json
Content文件内容{"key": "value"}
# 创建 /app/config.json 并写入指定内容
Type: file
Destination: /app/config.json
Content: {"debug": false, "port": 3000}

用例:

  • 配置文件
  • SSL 证书
  • 自定义脚本
  • Nginx 配置

Compose 服务

对于 Compose 服务,存储在 docker-compose.yml 中定义:

services:
  app:
    volumes:
      - app-data:/app/data          # 命名卷
      - ./config:/app/config:ro     # Bind mount(只读)
      
volumes:
  app-data:

Storage 标签页以只读模式显示 Compose 服务的当前挂载。

查看容器挂载

Storage 标签页显示:

  1. Configured Mounts:在 Senate 中定义的挂载(Docker 服务)
  2. Runtime Mounts:运行容器上的实际挂载

每个挂载显示:

  • 类型(volume、bind、file)
  • 源位置
  • 目标路径
  • 读写模式

卷管理

磁盘使用

在 Storage 标签页查看卷磁盘使用情况:

  • 总大小
  • 已用空间
  • 可用空间

卷位置

卷存储在主机的:

/var/lib/docker/volumes/{volume-name}/_data

最佳实践

数据库存储

数据库始终使用卷:

# PostgreSQL
Source: postgres-data
Destination: /var/lib/postgresql/data

# MySQL
Source: mysql-data
Destination: /var/lib/mysql

# MongoDB
Source: mongo-data
Destination: /data/db

文件上传

用于用户上传的文件:

Source: uploads
Destination: /app/uploads

备份

实施备份策略:

  1. 使用卷快照(如果主机支持)
  2. 运行具有卷访问权限的备份容器
  3. 复制到外部存储(S3 等)

只读挂载

对以下内容使用只读挂载:

  • 配置文件
  • 静态资源
  • 共享库
Source: config-files
Destination: /app/config
Read Only: true

相关内容

目录