Docker Desktop 部署单机minio节点

Docker Desktop 部署单机minio节点

提示:由于本人使用的是docker desktop,教程也就使用的这个安装,和linux下的docker的区别不大。命令都是可以复用的

分布式文件系统概念

分布式文件系统具有冗余性,大量数据分散到不同的节点上存储。部分节点的故障并不影响整体的正常运行,而且即使出现故障的计算机存储的数据已经损坏,也可以由其它节点将损坏的数据恢复出来,大大减小了数据丢失的风险。


文章目录

  • Docker Desktop 部署单机minio节点
  • `分布式文件系统`概念
  • 为什么选Minio不选FastDFS
    • 理由一:安装部署(运维)复杂度
    • 理由二:文档
    • 理由三:开源项目运营组织
    • 理由四:UI界面
    • 理由五:性能
    • 理由六:容器化支持
    • 理由七:丰富的SDK支持
    • 理由八:AWS S3标准兼容
  • Docker Desktop部署minio
    • 1、拉取镜像
    • 2、创建容器映射文件夹
    • 3、创建容器
    • 4、部署成功
  • 控制台教学
    • 界面教程
    • 创建桶
  • 总结


为什么选Minio不选FastDFS

理由一:安装部署(运维)复杂度

FastDFS部署复杂,需要具备以下的知识 linux基础的目录操作、常用的分布式主从原理、C语言代码的编译、nginx安装部署和nginx插件的使用(防盗链)。
MinIO在安装的过程是黑盒的,你不用去深入关注它的架构,也不需要你进行零件组装,基本上可以做到开箱即用。普通的技术人员就能够参与后期运维。

理由二:文档

从fastDFS开始,也有十年了。竟然没有官方文档,所有的文档全是某某公司的自己总结的文档,或者是某某网友自己总结的文档。
从这点上看fastDFS真的是一败涂地,当然阿里余庆大神在做这个项目的时候可能也没有考虑到后来会有这么多人用。即使用的人多了,在余庆大神眼里可能觉得这只是自己开发的一个小玩具,没有继续深入运营的必要。

理由三:开源项目运营组织

fastdfs是阿里余庆做的一个个人项目,在一些互联网创业公司中有应用,没有官网,不活跃,6个contributors。目前已经很少做更新。

MinIO目前是由2014年在硅谷创立的公司MinIO.Inc运营的开源项目,社区论坛的活跃度目前也非常的不错。

理由四:UI界面

我们都知道fastDFS默认是不带UI界面的,看看MinIO的界面吧。这个界面不需要你单独的部署,和服务端一并安装。开箱即用,爱了爱了

理由五:性能

MinIO号称是世界上速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以达到183 GB/s和171 GB/s。关于fastDFS我曾经单线程测试写了20万个文件,总共200G,大约用时10个小时。总体上是很难达到MinIO“号称的”以G为单位的每秒读写速度。

理由六:容器化支持

MinIO提供了与k8s、etcd、docker等容器化技术深度集成方案,可以说就是为了云环境而生的。这点是FastDFS不具备的。

理由七:丰富的SDK支持

fastDFS目前提供了 C 和 Java SDK ,以及 PHP 扩展 SDK。下图是MinIO提供的SDK支持,MinIO几乎提供了所有主流开发语言的SDK以及文档。同志们,重要的是文档。

理由八:AWS S3标准兼容

Amazon的S3 API是对象存储领域的事实标准。MinIO是S3兼容性的事实上的标准,是第一个采用API和第一个添加对S3 Select支持的标准之一。包括微软Azure在内的750多家公司使用MinIO的S3网关,这一数字超过了业内其他公司的总和。


Docker Desktop部署minio

提示:镜像选择 quay.io/minio/minio ,这是稳定版本。

1、拉取镜像

docker pull quay.io/minio/minio

Docker Desktop 部署单机minio节点_第1张图片

2、创建容器映射文件夹

创建文件夹 C:\DockerData\minio\data(数据)和 C:\DockerData\minio\config(配置)

Docker Desktop 部署单机minio节点_第2张图片

3、创建容器

docker run -d
	-p 9000:9000
	-p 9090:9090
	--name minio
	--restart=always
	-e "MINIO_BROWSER_REDIRECT_URL=http://自己的IP:9000"
	-e "MINIO_ROOT_USER=minioadmin"
	-e "MINIO_ROOT_PASSWORD=minioadmin"
	-v C:\DockerData\minio\data:/data
	-v C:\DockerData\minio\config:/root/.minio
	quay.io/minio/minio
	server /data
	--console-address ":9000" -address ":9090"
	
	# 稍微说一下
	# -d 后台运行
	# -p 9000:9000 前面的9000是打开本机的9000端口映射docker容器中MinIO9000端口
	# -p 9090:9090 
	# -e "MINIO_ROOT_USER=minioadmin" \ 改用户名
	# -e "MINIO_ROOT_PASSWORD=minioadmin" \  改密码
	# C:\DockerData\minio\data:/data \ 挂载卷
	# C:\DockerData\minio\config:/root/.minio \  挂载卷
	# --console-address ":9000"指定控制台端口为静态端口
	# -address ":9090" 指定API端口为静态端口

对于 MINIO_BROWSER_REDIRECT_URLMINIO_SERVER_URL两个比较重要的环境变量解释:

  1. MinIO 将浏览器访问请求重定向到配置的服务器端口(即127.0.0.1:9000)到配置的控制台端口。MinIO 在构建重定向 URL 时使用请求中指定的主机名或 IP 地址。客户端必须可以访问URL 和端口才能使重定向生效。
  2. 对于 MinIO 主机 IP 地址或端口不公开的负载平衡器、代理或入口规则后面的部署,请使用环境变量MINIO_BROWSER_REDIRECT_URL为重定向指定外部主机名。LB/Proxy 必须有专门将流量定向到 Console 端口的规则。
  3. 例如,考虑一个代理后面的 MinIO 部署https://minio.example.net,https://console.minio.example.net其规则是将端口 :9000 和 :9090 上的流量分别转发到内部网络上的 MinIO 和 MinIO 控制台。设置MINIO_BROWSER_REDIRECT_URL为https://console.minio.example.net以确保浏览器收到有效的可访问 URL。
  4. 同样,如果您的 TLS 证书没有 MinIO 服务器主机的 IP SAN,则 MinIO 控制台可能无法验证与服务器的连接。使用MINIO_SERVER_URL环境变量并指定 MinIO 服务器的代理可访问主机名,以允许控制台使用 TLS 证书使用 MinIO 服务器 API。
    例如:export MINIO_SERVER_URL=“https://minio.example.net”

注意:当你采用权限限制的访问服务中的图片时。生产的url中的ip会指向请求时提供的ip。比如请求时采用192.168.10.90时,生成的url(http://192.168.10.90:9090/xxx-oss/3.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credentia...)可以访问,如果把ip换成
127.0.0.1则不能访问回报The request signature we calculated does not match the signature you provided. Check your key and signing method.的错误信息。

4、部署成功

当出现一下日志是就表明部署成功。

Docker Desktop 部署单机minio节点_第3张图片

可以通过 http://127.0.0.1:9000/login 访问端口
账号密码:minioadmin/minioadmin


控制台教学

提示:旧版本和新版本的控制台区别比较大。但是我们只需要关注自己想关注的东西就可以了。下文也只讲比较常用的几个页面

界面教程

Docker Desktop 部署单机minio节点_第4张图片

Object Browser:桶界面管理。
Access Keys:创建Access Key和Secret Key管理的。创建的Access Keys在后面中的api请求中会用到
Buckets:是minio中比较核心的概念。桶类似一个文件存储的分类。

创建桶

在Buckets页面中点create buckets创建桶。然后直接点击创建的桶进入桶的管理页面,通过Access Policy对桶的权限进行设置。设置有三个选项private、public和custom可以设置。首先private是不能直接访问的,需要通过url携带签名一起访问。public是可以不用代签名,直接通过 ip:port/bucketsName/fileName就能直接访问,例如 http://127.0.0.1:9090/xxx-oss/3.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%…和 http://127.0.0.1:9090/xxx-oss/3.png

创建桶
Docker Desktop 部署单机minio节点_第5张图片
桶管理
Docker Desktop 部署单机minio节点_第6张图片
使用桶进行文件存储
Docker Desktop 部署单机minio节点_第7张图片
创建文件
Docker Desktop 部署单机minio节点_第8张图片
点击上传的文件,然后进行文件管理。
Docker Desktop 部署单机minio节点_第9张图片

总结

至此,Docker搭建Minio服务器和简单操作完成!!!后续客户端SDK操作有时间就继续补充。

你可能感兴趣的:(minio,docker)