当前位置: 首页 > Linux运维 > 使用Docker搭建minio对象存储与mc客户端常用命令

使用Docker搭建minio对象存储与mc客户端常用命令

发布于:2021-8-2 最后更新:2022-4-19 Linux运维 13条评论 20,991 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

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不妨一试。


标签: ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


已有13条评论


  1. 管理员把我上一条和本条信息删除一下(上条信息我把用户名和密码泄露了 ) ,我重发下,

  2. 你好大佬
    反馈一下,新版minio在游览器页面点击分享,跳出来docker地址,改成外网ip也没用,无法分享文件,不知道什么原因,谢谢

          1. 解决了 这样
            ···
            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”
            ···

      1. 谢谢大佬回复,分享出来的是docker容器地址,无法使用服务器ip地址,有点郁闷,用旧版本没这种问题

  3. 请教博主,有没有一款工具可以建立ftp、webdav的webui的docker应用。举例:我想通过浏览器远程访问NAS上的文件,ftp、webdav可以直接浏览器访问,但是这ui体验太差了。如果是群晖的话,是直接有webui来使用file station操作的。至于这类直接在磁盘上建立私有云盘的docker,在通过这个docker服务创建的文件夹,我通过ftp、webdav客户端直接管理时候会权限不足,但是如果有直接通过webui管理或者是挂载FTP、webdav空间来创建私有云盘就没有这方面的问题了。

    1. 1. RaiDrive支持FTP和WEBDAV,是客户端,不是WEBUI,参考:https://www.xiaoz.me/archives/12119
      2. Rclone可以挂载多种不同类型的存储,但是命令行的,也没有WEBUI的操作
      3. 威廉通NAS的HybridMount可以挂载多种存储,支持WEB操作,群晖没怎么用过就不太清楚了