MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,这篇文章分享下使用Docker搭建一个单磁盘实例的minio对象存储服务。

Docker搭建minio server
在开始之前,请确保您已经安装好Docker环境,参考:Linux安装Docker与Docker常用命令,然后复制下面的命令执行:
docker run -d -p 9000:9000 \
-p 9001:9001 \
--name minio \
-v /data/minio:/data \
-e "MINIO_ROOT_USER=xxx" \
-e "MINIO_ROOT_PASSWORD=xxx" \
-e MINIO_DOMAIN="xxx.com" \
--restart=always \
minio/minio server /data --console-address ":9001"上述参数含义如下:
9000数据通讯端口,比如您通过客户端或API上传对象时使用的端口/data/minio为本地挂载路径MINIO_ROOT_USER设置用户名MINIO_ROOT_PASSWORD设置密码MINIO_DOMAIN设置域名,域名的作用后面做进一步介绍--console-address ":9001"为WEB访问端口,以前老版本没有这个参数,最近新版增加的
域名的作用
默认情况下,如果要访问某个对象,地址为:http://IP:9001/bucket/xxx.txt,如果您在搭建的时候添加了域名参数MINIO_DOMAIN,域名做好解析后,您可以使用这样的方式访问到对象:http://bucket.xxx.com/1.txt,相当于就是将bucket映射为主机名称(域名前缀)
访问 && 设置
搭建完毕后通过您的IP:9001进行访问(或者域名也可以,前提是需要做解析),输入上面设置的用户名、密码进行登录。

用过对象存储的同学应该都知道bucket的概念,翻译成中文就是“桶”,我们的对象(文件)就是存放在这个“桶里面”,接下来我们点“Create Bucket”创建一个桶。

桶名称自己随便取一个,只要不重名就行。然后还可以选择是否启用对象(文件)历史版本,以及一些数据限制(比如容量或者文件数),不过上面是单磁盘运行的,似乎不支持这些特性。

mc客户端安装
mc客户端用于操作和管理minio,以Linux系统为例:
#下载mc客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc
#添加执行权限
chmod +x mc
#移动到/usr/bin目录
mv mc /usr/bin/
#查看使用帮助
./mc --help使用之前我们需要先进行设置,执行下面的命令,添加一个mino存储:
mc config host add minio http://192.168.1.51 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api s3v4http://192.168.1.51为minio server 的IP(注意需要带上端口号,如果按照上面的docker方法安装,应该带上9000端口)BKIKJAA5BMMU2RHO6IBB对应上面的用户名(AccessKeyID)V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12对应上面的密码(SecretAccessKey)
添加后会写入到一个配置文件中,路径为:/root/.mc/config.json如果需要移除某个存储,可以直接编辑json文件,或者通过下面的命令操作:
#移除名称为minio的存储
mc config host remove minio常用的一些命令如下:
ls 列出文件和文件夹。
mb 创建一个存储桶或一个文件夹。
cat 显示文件和对象内容。
pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。
share 生成用于共享的URL。
cp 拷贝文件和对象。
mirror 给存储桶和文件夹做镜像。
find 基于参数查找文件。
diff 对两个文件夹或者存储桶比较差异。
rm 删除文件和对象。
events 管理对象通知。
watch 监听文件和对象的事件。
policy 管理访问策略。
session 为cp命令管理保存的会话。
config 管理mc配置文件。
update 检查软件更新。
version 输出版本信息。mc常用命令实例
#查看已添加的host列表
mc config host list
#查看指定存储桶下面的文件
mc ls host/bucket/
#复制一个对象(文件)到目标host
mc cp local_file host/bucket/
#从minio复制一个文件到本地
mc cp host/bucket/file_name ./
#设置minio的匿名访问策略,可选值有none, download, upload, public
mc policy set upload host/bucket/
#查看匿名策略
mc policy list host/bucket/host:就是你在mc config host add时设置的名称bucket:指存储桶的名称
注意:匿名访问策略一般不建议设置为public,这样任何人都可以上传、下载、删除,是个非常危险的操作。如果希望文件公开访问,通常设置为download即可。
进一步操作
可参考我的另一篇文章:使用Nginx反向代理minio,提供文件公共访问
最后
上述内容仅简单介绍了minio server的安装和mc客户端的基本使用,minio的功能和特性还远不止如此。此文章仅使用单磁盘快速搭建和演示,生产用途请搭建多磁盘的分布式方案。minio作为企业级的自建对象存储方案,目前已经比较成熟和完善,入门也比较简单。如果企业有对象存储方面的需求,minio不妨一试。
- minio官网:https://min.io/
- mino中文文档:http://docs.minio.org.cn/docs/











https://min.io/docs/minio/linux/reference/minio-mc.html
文章该更新一下啦,好多命令都改了。
管理员把我上一条和本条信息删除一下(上条信息我把用户名和密码泄露了 ) ,我重发下,
删除了
你好大佬
反馈一下,新版minio在游览器页面点击分享,跳出来docker地址,改成外网ip也没用,无法分享文件,不知道什么原因,谢谢
没太明白,能否截图说明下。
楼主的意思点击分享文件按钮,出现的是ip,无法改为域名
我记得minio有个环境变量可以传递域名,设置域名后应该可以解决。
解决了 这样
···
docker stop minio1
docker rm minio1
docker run \
-p 9000:9000 \
-p 9001:9001 \
–name minio \
-v /minio/data:/data \
-e “MINIO_ROOT_USER=username” \
-e “MINIO_ROOT_PASSWORD=password” \
-e “MINIO_BROWSER_REDIRECT_URL=https://console.xxxx.cn” \
-e “MINIO_SERVER_URL=https://file.xxxx.cn” \
-d –restart=always \
quay.io/minio/minio server /data \
–console-address “:9001” -address “:9000”
···
要怎么进行更改呢 我还是做不出来
谢谢大佬回复,分享出来的是docker容器地址,无法使用服务器ip地址,有点郁闷,用旧版本没这种问题
你好 我按你的方法没有解决 怎么分享
请教博主,有没有一款工具可以建立ftp、webdav的webui的docker应用。举例:我想通过浏览器远程访问NAS上的文件,ftp、webdav可以直接浏览器访问,但是这ui体验太差了。如果是群晖的话,是直接有webui来使用file station操作的。至于这类直接在磁盘上建立私有云盘的docker,在通过这个docker服务创建的文件夹,我通过ftp、webdav客户端直接管理时候会权限不足,但是如果有直接通过webui管理或者是挂载FTP、webdav空间来创建私有云盘就没有这方面的问题了。
1. RaiDrive支持FTP和WEBDAV,是客户端,不是WEBUI,参考:https://www.xiaoz.me/archives/12119
2. Rclone可以挂载多种不同类型的存储,但是命令行的,也没有WEBUI的操作
3. 威廉通NAS的HybridMount可以挂载多种存储,支持WEB操作,群晖没怎么用过就不太清楚了