欢迎光临
我们一直在努力

RustFS Docker 部署指南 (SNSD)

RustFS Docker 安装指南 (SNSD)

本篇博文博主将详细介绍如何使用 Docker 在单节点单磁盘 (Single Node Single Disk, SNSD) 模式下安装和部署 RustFS。

概述:

  • RustFS 定义: 一个高性能、100% S3 兼容的开源分布式对象存储系统。
  • SNSD 模式: 单节点单磁盘部署模式。其后端不使用纠删码(zero erasure coding),因此没有额外的数据冗余。此模式适合本地测试和小规模应用场景。
  • Docker 化: 该文档基于 RustFS 官方的 Linux 二进制包,通过自定义的 Dockerfile 将 RustFS 及其运行时环境打包成容器镜像,并配置数据卷和环境变量,实现一键服务启动。

1. 前提条件 (Prerequisites)

主机要求:

  • Docker: 已安装 Docker Engine (版本 ≥ 20.10),并且能够正常拉取镜像和运行容器。
  • 数据路径: 主机上存在一个本地路径用于挂载对象数据,例如 /mnt/rustfs/data (或者可以自定义路径)。

网络与防火墙:

  • 端口开放: 确保主机上的端口 9000 对外部访问开放 (或者与您自定义的端口保持一致)。这是 RustFS 服务的默认端口。

配置文件准备:

  • 虽然 Docker 方式不一定强制使用 /etc/rustfs/config.toml,但文档提及此路径可用于定义监听端口、管理员账户、数据路径等。对于容器化部署,更常用的是环境变量或命令行参数。
  • 重要权限说明: RustFS 容器以内置的非 root 用户 rustfs (UID: 10001) 运行。当您使用 -v 参数将主机目录挂载到容器内部时,请务必确保主机目录的所有者已更改为 UID 10001,否则容器会因权限不足而无法写入数据,导致启动失败或运行异常。

2. 快速拉取 RustFS 官方镜像 (Quick Pull of RustFS Official Image)

docker pull rustfs/rustfs

此命令会从 Docker Hub 拉取最新的 RustFS 官方镜像 (rustfs/rustfs:latest)。


3. 运行 RustFS 容器 (Run RustFS Container)

这是安装的核心步骤。提供了基础运行命令以及多种配置选项。

基础 SNSD Docker 运行方法:

docker run -d \\
–name rustfs_local \\
-p 9000:9000 \\
-p 9001:9001 \\
-v /mnt/rustfs/data:/data \\
rustfs/rustfs:latest \\
/data

参数解释:

  • -d: 在后台(detached mode)运行容器。
  • –name rustfs_local: 为容器指定一个自定义名称 rustfs_local。
  • -p 9000:9000: 将主机的 9000 端口映射到容器的 9000 端口(RustFS 服务端口)。
  • -p 9001:9001: 将主机的 9001 端口映射到容器的 9001 端口(RustFS 控制台端口)。
  • -v /mnt/rustfs/data:/data: 将主机的 /mnt/rustfs/data 目录挂载到容器内的 /data 目录,用于持久化存储对象数据。
  • rustfs/rustfs:latest: 指定要运行的 Docker 镜像。
  • /data: 这是一个必需参数,必须放在 docker run 命令的最后,它告诉 RustFS 在容器内使用哪个路径作为数据存储目录。

配置选项:

配置可以通过两种主要方式完成:环境变量 (推荐) 和 命令行参数。

  • 环境变量方法 (Recommended): 使用 -e 标志设置环境变量。这些变量会被 RustFS 进程读取。

    • RUSTFS_ADDRESS: 例如 -e RUSTFS_ADDRESS=:9000,指定服务监听地址。
    • RUSTFS_SERVER_DOMAINS: 例如 -e RUSTFS_SERVER_DOMAINS=example.com,设置服务器域名。
    • RUSTFS_ACCESS_KEY: 例如 -e RUSTFS_ACCESS_KEY=rustfsadmin,设置 S3 API 访问密钥。
    • RUSTFS_SECRET_KEY: 例如 -e RUSTFS_SECRET_KEY=rustfsadmin,设置 S3 API 私有密钥。
    • RUSTFS_CONSOLE_ENABLE: 例如 -e RUSTFS_CONSOLE_ENABLE=true,启用内置 Web 控制台。
  • 命令行参数方法: 直接在 docker run 命令中附加 RustFS 支持的命令行标志。

    • –address :9000: 指定服务监听地址。
    • –server-domains example.com: 设置服务器域名。
    • –access-key rustfsadmin: 设置 S3 API 访问密钥。
    • –secret-key rustfsadmin: 设置 S3 API 私有密钥。
    • –console-enable: 启用内置 Web 控制台。

示例:包含环境变量和命令行参数的复杂启动命令

docker run -d \\
–name rustfs_container \\
-p 9000:9000 \\
-p 9001:9001 \\
-v /mnt/rustfs/data:/data \\
-e RUSTFS_ACCESS_KEY=rustfsadmin \\
-e RUSTFS_SECRET_KEY=rustfsadmin \\
-e RUSTFS_CONSOLE_ENABLE=true \\
-e RUSTFS_SERVER_DOMAINS=example.com \\
rustfs/rustfs:latest \\
–address :9000 \\
–console-enable \\
–server-domains example.com \\
–access-key rustfsadmin \\
–secret-key rustfsadmin \\
/data

注意事项:

  • 必需参数: <VOLUMES> (即 /data 这个路径参数) 必须始终放在 docker run 命令的末尾。
  • 基本配置示例:docker run -d \\
    -p 9000:9000 \\
    -p 9001:9001 \\
    -v /mnt/data:/data \\
    rustfs/rustfs:latest \\
    /data
  • 启用控制台示例:docker run -d \\
    -p 9000:9000 \\
    -p 9001:9001 \\
    -v /mnt/data:/data \\
    -e RUSTFS_CONSOLE_ENABLE=true \\
    rustfs/rustfs:latest \\
    –console-enable \\
    /data
  • 自定义认证密钥示例:docker run -d \\
    -p 9000:9000 \\
    -p 9001:9001 \\
    -v /mnt/data:/data \\
    -e RUSTFS_ACCESS_KEY=rustfsadmin \\
    -e RUSTFS_SECRET_KEY=rustfsadmin \\
    rustfs/rustfs:latest \\
    –access-key rustfsadmin \\
    –secret-key rustfsadmin \\
    /data
  • 重要规则:
    • 端口映射必须对应:服务端口默认为 9000 (-p 9000:9000),控制台端口默认为 9001 (-p 9001:9001)。
    • 数据卷必须持久化:-v /host/path:/container/path 是保证数据不随容器销毁而丢失的关键。
    • 环境变量和命令行参数可以混合使用,但是命令行参数的优先级高于环境变量。
  • TLS 支持: 如果计划使用 TLS,需要额外将证书路径挂载到容器内,并设置相关环境变量,例如:-v /path/to/certs:/certs \\
    -e RUSTFS_TLS_PATH=/certs \\

Docker Compose 安装方法:

RustFS 官方提供了一个 docker-compose.yml 文件,不仅包含 RustFS 服务,还集成了 Grafana、Prometheus、Jaeger、OpenTelemetry Collector 等可观测性组件。

  • 获取文件:

    git clone git@github.com:rustfs/rustfs.git
    cd rustfs # 进入克隆的仓库目录

  • 启动包含可观测性的全套服务:

    docker compose –profile observability up -d

    这将根据 docker-compose.yml 中定义的 observability profile 启动 RustFS 以及相关的监控追踪服务。

  • 仅启动 RustFS 服务: 如果你不想部署 Grafana、Prometheus 等可观测性服务,只想运行 RustFS 本身:

  • 编辑 docker-compose.yml 文件,找到与 rustfs-server 服务相关的 depends_on 部分(通常是指向 otel-collector 的依赖),将其注释掉(在行首加 #)。
  • 运行以下命令:docker compose -f docker-compose.yml up -d rustfs
  • 这样只会启动 rustfs-server 服务,即 RustFS 容器。

    你可以通过 docker ps 查看运行中的容器来确认。


4. 验证与访问 (Verification and Access)

查看容器状态和日志:

  • 使用 docker logs <container_name> 命令检查容器的日志输出。例如 docker logs rustfs_local。日志应显示服务成功启动并在端口 9000 上监听的信息。

测试 S3 API:

  • 推荐使用 mc (MinIO Client) 或其他任何 S3 兼容的客户端工具进行测试。
  • 示例(假设 RustFS 运行在 localhost:9000,默认凭据为 rustfsadmin/ChangeMe123!):# 设置别名
    mc alias set rustfs http://localhost:9000 rustfsadmin ChangeMe123!
    # 创建一个名为 mybucket 的存储桶
    mc mb rustfs/mybucket
    # 列出 rustfs 别名下的存储桶
    mc ls rustfs
  • 如果能成功创建存储桶并列出,说明部署有效。

访问 Web 控制台:

  • 如果在启动容器时启用了控制台 (RUSTFS_CONSOLE_ENABLE=true 或 –console-enable),则可以通过浏览器访问 http://<YOUR_HOST_IP>:9000 来打开 Web 界面。
  • 使用默认的用户名和密码登录(通常是 rustfsadmin / rustfsadmin,具体取决于你的配置)。

5. 其他建议 (Other Recommendations)

生产环境建议:

  • 使用多节点部署架构以提高可用性和性能。
  • 启用 TLS 加密通信以保障数据传输安全。
  • 配置日志轮转策略,防止日志文件无限增长。
  • 设立定期备份策略,保护元数据和对象数据。
  • 配置监控和告警(可利用 Docker Compose 中提供的可观测性栈)。

存储建议:

  • 使用本地 SSD 或 NVMe 存储以获得最佳 I/O 性能。
  • 避免使用网络文件系统 (NFS),因为其延迟和一致性问题可能影响性能和稳定性。
  • 确保 RustFS 使用的存储目录具有独占访问权,避免与其他应用共享同一物理路径。

source: https://docs.rustfs.com/installation/docker/

赞(0)
未经允许不得转载:171主机测评 » RustFS Docker 部署指南 (SNSD)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址