Minio安裝以及使用
Minio介紹#
MinIO 是一個基於Apache License v2.0開源協議的對象存儲服務。適合於存儲大容量非結構化的數據,例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從數KB到最大5TB都能很好的支持。開源並且用Go語言開發,有web操作界面,我們可以用它來搭建兼容S3協議的存儲雲服務。相比 hadoop hdfs 分布式存儲服務輕量很多,且支持單節點部署。
SDK(API):
官方安裝文檔,MinIO提供了很多語言的SDK跟API支持:javascript,Java,python,Golang、.Net。
分部署部署:
-
分布式MinIO里所有的節點需要有同樣的access秘鑰和secret秘鑰,這樣節點才能建立聯接。需要在執行minio server命令之前,先將access秘鑰和secret秘鑰export成環境變量。
-
分布式MinIOo使用的磁盤里必須是干凈的,里面沒有數據。
-
分布式MinIO里的節點時間差不能超過3秒
-
分布式部署至少需要4個節點,否則啟動會報錯
MinIO支持單機部署、多租戶部署、分布式部署。支持原始文件存儲已經糾刪碼模式存儲。單機部署時,可使用minio的客戶端工具進行備份。
安裝MinIO#
MinIO的安裝方式有很多,支持docker容器安裝、二進制方式安裝,這里我選擇docker安裝方式,docker環境默認已安裝,docker可參考,本篇主要學習安裝、以及上傳圖片。
2.1 拉取MinIO鏡像
docker pull minio/minio
2.2 查看鏡像
docker images
2.3 運行鏡像MinIO
docker run -p 9090:9000 --name minio \ -v /etc/localtime:/etc/localtime \ -v /data/minio/data:/data \ -v /data/minio/config:/root/.minio \ -d minio/minio server /data
# 查看正在運行的容器 docker ps
# 查看MinIO容器日志 : docker logs 0d3eaca91ffc
# 監控MinioDocker容器: docker stats 0d3eaca91ffc
2.4 瀏覽器訪問
- 登陸:在輸入控制打印的默認的AccessKey和SecretKey:
AccessKey: minioadmin SecretKey: minioadmin
-
創建桶:進入系統后,我們先要點擊右下角的“+”按鈕,創建一個文件桶(輸入名稱后,回車即可),在上傳文件到這個文件桶中。Create bucket(創建文件桶)、Upload file(上傳文件),這里我創建了一個桶test,上傳了一張圖片
-
查看桶目錄
進入服務器/data/minio/data目錄,文件桶test相當於文件目錄,這里沒有使用糾刪碼的模式,所以直接就是源文件了。當我們線上運行的項目已經有源文件了,在使用minio的時候,可以直接指定該目錄為minio的文件目錄就行了。
- 分享鏈接
上傳的文件,在文件列表界面有一個分享按鈕,點擊分享將生成文件的訪問URL地址,以指定鏈接的有效時間,有效時間最多7天,最小的單位是分鍾。在有效時間過期后在訪問圖片時,會提示失效。
- 存儲桶訪問策略
要想獲取一個永久的訪問路徑,需要修改存儲桶的訪問策略,點擊存儲桶右上角的編輯策略按鈕來修改訪問策略,有三種訪問策略可以選擇:只讀、只寫、可讀可寫,這里我們選擇只讀即可,但是需要注意的是,訪問前綴需要設置為.,否則會無法訪問;
設置完成后,只需要通過拷貝鏈接中的前一串路徑即可永久訪問該文件
MinIO客戶端#
MinIO Client (mc)為ls,cat,cp,mirror,diff,find等UNIX命令提供了一種替代方案。它支持文件系統和兼容Amazon S3的雲存儲服務(AWS Signature v2和v4)。MinIO服務端中並沒有自帶客戶端,所以我們需要安裝配置完客戶端后才能使用。
常用mc的命令:
命令 | 作用 |
---|---|
ls | 列出文件和文件夾 |
mb | 創建一個存儲桶或一個文件夾 |
cat | 顯示文件和對象內容 |
pipe | 將一個STDIN重定向到一個對象或者文件或者STDOUT |
share | 生成用於共享的URL |
cp | 拷貝文件和對象 |
mirror | 給存儲桶和文件夾做鏡像 |
find | 基於參數查找文件 |
diff | 對兩個文件夾或者存儲桶比較差異 |
rm | 刪除文件和對象 |
events | 管理對象通知 |
watch | 監聽文件和對象的事件 |
policy | 管理訪問策略 |
session | 為cp命令管理保存的會話 |
config | 管理mc配置文件 |
update | 檢查軟件更新 |
version | 輸出版本信息 |
3.1下載MinIO Client 的Docker鏡像
docker pull minio/mc
3.2 運行鏡像MinIO Client
# 如果想用mc操作其它S3兼容的服務,采用下面的方式來啟動容器,然后使用mc config命令。 docker run -it --entrypoint=/bin/sh minio/mc 說明: -it 打開STDIN,用於控制台交互 --entrypoint="", 覆蓋image的入口點
添加一個或多個S3兼容的服務,請參考下面說明。mc將所有的配置信息都存儲在~/.mc/config.json文件中。 如果容器啟動中,需要重新進入: docker attach id #進入某個容器(使用exit退出后容器也跟着停止運行) docker exec -ti id /bin/sh #啟動一個偽終端以交互式的方式進入某個容器(使用exit退出后容器不停止運行) docker exec -it ec6e0a2023e5 /bin/sh
3.3 添加一個雲存儲服務
命令格式:mc config host add [--api API-SIGNATURE]
別名ALIAS就是給你的雲存儲服務起了一個短點的外號
S3 endpoint,access key和secret key是你的雲存儲服務提供的
API簽名是可選參數,默認情況下,它被設置為"S3v4"
mc config host add minio http://172.20.32.232:9090 minioadmin minioadmin --api s3v4
3.4 常用操作
mc ls minio //查看存儲桶 mc ls minio/test //查看存儲桶test中存在的文件
3.5 創建存儲桶(比如:存儲桶dnps)
mc mb minio/dnps //創建一個名為dnps的存儲桶 mc share download minio/test/small.jpg //共享test桶下small.jpg文件的下載路徑 mc find minio/test --name "*.jpg" //查找test存儲桶中的png文件 mc policy set download minio/dnps/ //設置權限:none, download, upload, public mc policy list minio/dnps/ //查看存儲桶當前權限 mc cp minio/test/small.jpg minio/dnps/ //拷貝文件和對象
作者: 高宏宇