news 2026/4/15 12:10:01

RustFS Docker 部署指南 (SNSD)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

dockerpull rustfs/rustfs

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


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

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

基础 SNSD Docker 运行方法:

dockerrun -d\--name rustfs_local\-p9000:9000\-p9001: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 控制台。

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

dockerrun -d\--name rustfs_container\-p9000:9000\-p9001:9001\-v /mnt/rustfs/data:/data\-eRUSTFS_ACCESS_KEY=rustfsadmin\-eRUSTFS_SECRET_KEY=rustfsadmin\-eRUSTFS_CONSOLE_ENABLE=true\-eRUSTFS_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命令的末尾。
  • 基本配置示例:
    dockerrun -d\-p9000:9000\-p9001:9001\-v /mnt/data:/data\rustfs/rustfs:latest\/data
  • 启用控制台示例:
    dockerrun -d\-p9000:9000\-p9001:9001\-v /mnt/data:/data\-eRUSTFS_CONSOLE_ENABLE=true\rustfs/rustfs:latest\--console-enable\/data
  • 自定义认证密钥示例:
    dockerrun -d\-p9000:9000\-p9001:9001\-v /mnt/data:/data\-eRUSTFS_ACCESS_KEY=rustfsadmin\-eRUSTFS_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\-eRUSTFS_TLS_PATH=/certs\

Docker Compose 安装方法:

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

  • 获取文件:

    gitclone git@github.com:rustfs/rustfs.gitcdrustfs# 进入克隆的仓库目录
  • 启动包含可观测性的全套服务:

    dockercompose --profile observability up -d

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

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

    1. 编辑docker-compose.yml文件,找到与rustfs-server服务相关的depends_on部分(通常是指向otel-collector的依赖),将其注释掉(在行首加#)。
    2. 运行以下命令:
      dockercompose -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!):
    # 设置别名mcaliassetrustfs http://localhost:9000 rustfsadmin ChangeMe123!# 创建一个名为 mybucket 的存储桶mcmb rustfs/mybucket# 列出 rustfs 别名下的存储桶mclsrustfs
  • 如果能成功创建存储桶并列出,说明部署有效。

访问 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/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 18:40:37

【课程设计/毕业设计】基于springboot的元宇宙平台的整车生产线管理系统空间管理、各类模型管理、各类素材管理等功能【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/10 9:41:31

计算机Java毕设实战-基于springboot的云平台的工厂整车生产线管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/11 7:37:13

《把脉行业与技术趋势》-81-《全球科技通史》- 既然能量是守恒的,既然世界的本质是熵增,而是人类生产创造活动是熵减,是需要消耗额外的能量,那么这个熵减活动的能量是哪里来的?

这是一个极富深度、横跨物理学&#xff08;热力学&#xff09;、生态学、经济学与哲学的本源性问题。我们来一层层清晰拆解&#xff0c;避免常见误解&#xff0c;给出既科学严谨又具现实解释力的回答&#xff1a; ✅ 核心结论&#xff08;先说答案&#xff09;&#xff1a; 人类…

作者头像 李华
网站建设 2026/4/10 7:59:41

【课程设计/毕业设计】基于springbootJava的智慧话果园数字化管理领航系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/15 16:31:52

亲测好用8个AI论文平台,继续教育学生轻松搞定毕业论文!

亲测好用8个AI论文平台&#xff0c;继续教育学生轻松搞定毕业论文&#xff01; AI 工具如何成为论文写作的得力助手 在当前继续教育学生面临毕业论文压力日益增大的背景下&#xff0c;AI 工具正逐渐成为学术写作中不可或缺的一部分。尤其是那些能够有效降低 AIGC&#xff08;…

作者头像 李华
网站建设 2026/4/13 20:15:04

JX085_Z30130X31型钻床控制系统的PLC改造

第二章 机床的主要参数 1.机床的主要参数 &#xff08;1&#xff09;最大钻孔直径 100mm &#xff08;2&#xff09;主轴中心线至立柱母线距离&#xff1a;最大 3150mm 最小 570mm &#xff08;3&…

作者头像 李华