Docker 搭建 Minio 容器
一、简介
Minio 是一个基于 Apache License v2.0 开源协议的对象存储服务,虽然轻量,却拥有着不错的性能。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据。 例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。
二、说明
Docker如果想安装软件 , 必须先到 Docker 镜像仓库下载镜像。
Docker 官方镜像
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 指具体版本号) |
代码语言:javascript复制检查当前所有Docker下载的镜像
docker images
3、创建目录
代码语言:javascript复制一个用来存放配置,一个用来存储上传文件的目录 启动前需要先创建 Minio 外部挂载的配置文件( /mydata/minio/config),和存储上传文件的目录( /mydata/minio/data)
mkdir -p /mydata/minio/config
mkdir -p /mydata/minio/data
4、创建 Minio 容器并运行
代码语言:javascript复制多行模式
docker run -p 9000:9000 -p 9090:9090
--net=host
--name minio
-d --restart=always
-e "MINIO_ROOT_USER=minioadmin"
-e "MINIO_ROOT_PASSWORD=minioadmin"
-v /mydata/minio/data:/data
-v /mydata/minio/config:/root/.minio
minio/minio server
/data --console-address ":9090" -address ":9000"
代码语言:javascript复制单行模式
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 /mydata/minio/data:/data -v /mydata/minio/config:/root/.minio minio/minio server /data --console-address ":9090" -address ":9000"
- 9090 端口指的是 minio 的客户端端口
- MINIO_ROOT_USER:账号
- MINIO_ROOT_PASSWORD:密码(账号长度必须大于等于 5,密码长度必须大于等于 8 位)
5、访问操作
访问:http://192.168.56.10:9090/login 用户名:密码 minioadmin:minioadmin
5.1 创建用户
5.2 创建组
5.3 创建 accessKey 和 secretKey
文件内容如下,保存文件,SDK 操作文件的API需要用到
代码语言:javascript复制{
"console": [
{
"access_key": "KJ7ALNE1W5USGVEHAIQ3",
"secret_key": "ToxjeRqqJ2CmRUhpMpdXxVR5VO3rdKZOEdp xqFJ"
}
]
}
5.4 创建 Bucket
5.5 上传文件
6、SDK 操作
官方文档:https://docs.min.io/docs/
javaSDK:https://docs.min.io/docs/java-client-quickstart-guide.html
maven 依赖
代码语言:javascript复制 #低版本的okhttp会报错提示
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.2</version>
<exclusions>
<exclusion>
<artifactId>okhttp</artifactId>
<groupId>com.squareup.okhttp3</groupId>
</exclusion>
</exclusions>
</dependency>
测试文件上传 :
代码语言:javascript复制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 {
try {
// Create a minioClient with the MinIO server playground, its access key and secret key.
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://192.168.56.10:9000")
.credentials("XO1JDovW2FTmGaBb", "uG6wMfylUnOVH5WzwxqnldOWw2dMshNX")
.build();
// Make 'asiatrip' bucket if not exist.
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());
if (!found) {
// Make a new bucket called 'asiatrip'.
minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());
} else {
System.out.println("Bucket 'public' already exists.");
}
// Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
// 'asiatrip'.
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("public")
.object("credentials.json")
.filename("C:/Users/lai.huanxiong/Downloads/credentials.json")
.build());
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());
}
}
}
文件上传成功展示