平时做项目的时候,文件存储是个很常见的需求。这时候就会用到对象存储服务,平时可能会选择 OSS、AWS S3 这类第三方服务。今天带大家搭建一款自己的对象存储服务,带可视化管理,用起来也挺简单!
MinIO 是一款基于 Go 语言的高性能对象存储服务。它采用了 Apache License v2.0 开源协议,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
服务器 | 系统 | 备注 |
---|---|---|
192.168.184.130 | centos7 | Linux部署方式、docker 部署方式 |
192.168.0.107 | Windows | Windows 部署方式 |
MinIO 是支持多平台的 Windows、macOS、Linux、Docker 都支持,各个平台部署起来相对简单。MinIO 部署分为两个模式,一个是单模式,另一个是分布式模式
首先提前说明一下,9000 和 9001 是端口号,如果被占用,可以使用其他的端口号, - v 就是路径了,这里可以创建一个,或者使用其他的路径就好了
使用下面命令即可启动一个 minio 实例,这里指定了账号 admin:admin123456,数据存储在宿主机的 /mnt/data 目录下
docker run -d --restart always -p 9000:9000 -p 9001:9001 --name minio -v /mnt/data:/data -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456" minio/minio server /data --console-address ":9001"
有些小伙伴启动后会发现访问不了,使用 docker logs [容器id] ,可以看到 mkdir /data/.minio.sys: permission denied 的错误
这个也有解决办法,就是在启动命令中加 --privileged=true 参数即可
docker run -d --restart always --privileged=true -p 9000:9000 -p 9001:9001 --name minio -v /mnt/data:/data -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=admin123456" minio/minio server /data --console-address ":9001"
这是因为大约在 0.6 版,privileged 被引入docker。使用该参数,container 内的root拥有真正的 root 权限。否则,container 内的 root 只是外部的一个普通用户权限。privileged 启动的容器,可以看到很多 host 上的设备,并且可以执行 mount 。甚至允许在 docker 容器中启动 docker 容器。
首先使用下面 wget 命令进行下载,我这里放置的是 /var/local/ 目录下,然后使用 chmod 赋予权限
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
下载完成后,就可以启动 MinIO 了。不过在启动之前先创建一下数据存储的目录 /data/minio,然后就可以使用命令启动 MinIO 了
mkdir -p /data/minio
./minio server /data/minio --console-address ":9001"
点击地址 https://dl.min.io/server/minio/release/windows-amd64/minio.exe 对 MiniO 进行下载
下载完成后,在可执行文件夹下启动命令行工具,执行下面命令,即可启动 MiniO
minio.exe server D:\Data\MiniO --console-address ":9001"
D:\Data\MiniO :支持 minio 数据持久存储的目录
在启动 MinIO 时,会发现通常指定了两个端口,其中 90001 就是 Console 的端口。浏览器访问 console http://192.168.0.107:9001/,输入指定的账户,在没有指定的情况下默认是 minioadmin:minioadmin,docker 中可以指定如上面的部署 admin:admin123456
对于对象存储来说,MinIO Console 的功能还是不够用的,所以官方还提供了基于命令行的客户端 MinIO Client (简称 mc),下面来讲讲它的使用方法。MinIO 也是支持多平台的 Windows、macOS、Linux、Docker 都支持,部署起来也相对简单。
访问 https://dl.min.io/client/mc/release/windows-amd64/mc.exe 下载 mc
然后在 mc 文件目录,启动命令行客户端。现在的 mc 与 server 是没有关联的,可以使用下面命令在 mc 添加 server,这里在 Windows 连接 docker 中部署的 server
mc config host add minio http://192.168.184.130:9000 admin admin123456
格式:
mc config host add
更多的操作可以使用 mc --help 进行查看
# 查看存储桶
mc ls minio
# 查看存储桶中存在的文件
mc ls minio/blog
当对接第三方服务要用到对象存储时,这些服务往往都是支持 AWS S3 的。由于 MinIO 兼容 AWS S3 的大多数 API,我们可以直接拿它当 AWS S3 来使用。
访问地址 https://s3browser.com/ 下载S3 客户端工具,然后按照提示下一步下一步即可完成安装
安装完成后打开软件,我这里是在 Windows 上,连接 docker 中部署的 server