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 s3v4
http://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操作,群晖没怎么用过就不太清楚了