本节摘要:单机部署是所有 MinIO 学习路径的第一站,目标是十分钟内跑通"服务启动、控制台可开、客户端可读写"三个验收点。本节给出二进制与容器两种完整实录,并说清单机独立模式的边界——它能陪你练手,不能陪你上生产。
下午四点半,数据平台负责人在工位间喊了一嗓子:"下周一演示对象存储,谁能今天先弄个能传文件的出来?"你环顾四周,角落里有台闲置的旧服务器,系统是 Rocky Linux 9,一块 500G 的系统盘加一块 2T 的数据盘。就用它。接下来的一小时里发生的事,就是本节的内容——而你会看到,MinIO 把"从零到能传文件"压缩到了一条命令。
单机 MinIO 以独立模式(standalone)运行:无纠删码、无分布式元数据、数据裸放在指定目录的文件系统上。它有三个边界必须先讲清:
所以正确姿势是:特性学习、CI 环境、临时对接测试用单机;生产从第一天起就是分布式。2.2 的四节点集群才是真仓,本节先把工具链摸熟。
二进制方式最能看清 MinIO 的全貌——它真的就只有一个文件。以下命令在 Rocky Linux 9 实测通过,从官方下载站获取服务端与客户端两个程序:
# 1. 下载服务端与客户端(生产环境请固定到具体 RELEASE 版本号,别追 latest) cd /usr/local/bin wget https://dl.min.io/server/minio/release/linux-amd64/minio wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x minio mc # 2. 准备数据目录——专用盘专用目录,别和系统盘混居 mkfs.xfs /dev/sdb mkdir -p /data/minio && mount /dev/sdb /data/minio # 3. 创建运行用户(别用 root 跑服务) useradd -r -s /sbin/nologin minio-user chown -R minio-user:minio-user /data/minio # 4. 前台启动,验证能否拉起 export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD='Chang3Me!2026' sudo -u minio-user /usr/local/bin/minio server /data/minio --console-address ":9001"
终端滚出启动横幅与两行端口信息就成功了:9000 是 S3 API 端口,9001 是 Web 控制台端口。此刻打开浏览器访问主机的 9001 端口,用刚才两个环境变量登录,能看见空荡荡的控制台首页。
验收动作三连,客户端链路一并打通:
# 配置客户端别名(相当于把地址和凭证存进本地配置) mc alias set lab http://10.0.0.51:9000 admin 'Chang3Me!2026' # 建桶、传文件、列出来——三个最基本的读写动作 mc mb lab/hello mc cp /var/log/messages lab/hello/test-obj.txt mc ls lab/hello
mc ls 能列出刚上传的 test-obj.txt,单机部署就算验收通过。
容器方式适合 CI 与临时环境,一条命令拉起:
docker run -d \ --name minio-lab \ -p 9000:9000 -p 9001:9001 \ -v /data/minio:/data \ -e "MINIO_ROOT_USER=admin" \ -e "MINIO_ROOT_PASSWORD=Chang3Me!2026" \ minio/minio:RELEASE.2026-01-15T00-00-00Z \ server /data --console-address ":9001"
两处细节值得咬文嚼字。其一,镜像标签固定到具体 RELEASE 而不是 latest——存储软件的升级要过变更流程, floating 标签会让你某天重启后面对一个行为变化的存储层。其二,数据卷挂载到宿主机目录而不是 docker 命名卷,容器删了数据还在;生产上若用容器方案,数据目录同样要求是专用块设备。

端口起不来:多半是 9000 被占用(常见嫌犯是某些代理服务默认端口撞车)。用 ss -tlnp | grep 9000 找到占用者,要么换端口要么改配置,别硬杀别人的进程。
控制台打不开但 API 正常:忘了 --console-address 参数,控制台会随机挑高位端口。生产环境固定控制台端口是纪律,方便防火墙放行。
写入报权限错误:数据目录的属主不是运行用户。minio-user 要对数据目录有完整的读写执行权限,chown -R 一次到位,检查 SELinux 状态是否在拦截(Rocky 系默认开启)。
重启后环境变量丢失:前台 export 的变量只活在当前会话。这正是 2.3 要用 systemd 托管的原因——环境变量写进服务单元的配置文件,重启由 systemd 负责。
单机玩熟了,下一节把四台机器编成一支真正的纠删码舰队。