Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务,虽然轻量,却拥有着不错的性能。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据。
例如图片、视频、日志文件、备份数据和容器 / 虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
1、寻找 Minio 镜像

2、下载 Minio 镜像
| 命令 | 描述 |
|---|---|
| docker pull minio/minio | 下载最新版 Minio 镜像 (其实此命令就等同于 : docker pull minio/minio:latest) |
| docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips | 下载指定版本的 Minio 镜像 (xxx 指具体版本号) |

检查当前所有 Docker 下载的镜像
docker images
3、创建目录
一个用来存放配置,一个用来存储上传文件的目录
启动前需要先创建 Minio 外部挂载的配置文件( /home/minio/config), 和存储上传文件的目录( /home/minio/data)
-
mkdir -p /home/minio/config
-
mkdir -p /home/minio/data
4、创建 Minio 容器并运行
多行模式
-
docker run -p 9000:9000 -p 9090:9090 \
-
-e "MINIO_ACCESS_KEY=minioadmin" \
-
-e "MINIO_SECRET_KEY=minioadmin" \
-
-v /home/minio/data:/data \
-
-v /home/minio/config:/root/.minio \
-
/data --console-address ":9090" -address ":9000"
单行模式
docker run -p 9000:9000 -p 9090:9090 --net=host --name minio -d --restart=always -e "MINIO_ACCESS_KEY=minioadmin" -e "MINIO_SECRET_KEY=minioadmin" -v /home/minio/data:/data -v /home/minio/config:/root/.minio minio/minio server /data --console-address ":9090" -address ":9000"
9090 端口指的是 minio 的客户端端口
MINIO_ACCESS_KEY :账号
MINIO_SECRET_KEY :密码(账号长度必须大于等于 5,密码长度必须大于等于 8 位)

5、访问操作
访问:http://192.168.124.132:9090/login 用户名:密码 minioadmin:minioadmin
创建用户


创建组


创建 accessKey 和 secretKey

点击下载

文件内容如下,保存文件,SDK 操作文件的 API 需要用到
{"url":"http://192.168.124.132:9000","accessKey":"XO1JDovW2FTmGaBb","secretKey":"uG6wMfylUnOVH5WzwxqnldOWw2dMshNX","api":"s3v4","path":"auto"}
创建 Bucket



上传文件


6、SDK 操作
官方文档:https://docs.min.io/docs/

javaSDK:https://docs.min.io/docs/java-client-quickstart-guide.html

maven 依赖
-
<groupId>com.squareup.okhttp3</groupId>
-
<artifactId>okhttp</artifactId>
-
<groupId>io.minio</groupId>
-
<artifactId>minio</artifactId>
-
<artifactId>okhttp</artifactId>
-
<groupId>com.squareup.okhttp3</groupId>

测试文件上传
-
import io.minio.BucketExistsArgs;
-
import io.minio.MakeBucketArgs;
-
import io.minio.MinioClient;
-
import io.minio.UploadObjectArgs;
-
import io.minio.errors.MinioException;
-
import java.io.IOException;
-
import java.security.InvalidKeyException;
-
import java.security.NoSuchAlgorithmException;
-
public class FileUploader {
-
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
-
MinioClient minioClient =
-
.endpoint("http://192.168.124.132:9000")
-
.credentials("XO1JDovW2FTmGaBb", "uG6wMfylUnOVH5WzwxqnldOWw2dMshNX")
-
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());
-
minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());
-
System.out.println("Bucket 'public' already exists.");
-
minioClient.uploadObject(
-
UploadObjectArgs.builder()
-
.object("credentials.json")
-
.filename("C:/Users/lai.huanxiong/Downloads/credentials.json")
-
System.out.println("'C:/Users/lai.huanxiong/Downloads/credentials.json' is successfully uploaded as " + "object 'credentials.json' to bucket 'public'.");
-
} catch (MinioException e) {
-
System.out.println("Error occurred: " + e);
-
System.out.println("HTTP trace: " + e.httpTrace());

文件上传成功展示

至此,Docker 搭建 Minio 服务器和简单操作完成!!!