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 指具体版本号)

 检查当前所有 Docker 下载的镜像

docker images

 3、创建目录

一个用来存放配置,一个用来存储上传文件的目录

启动前需要先创建 Minio 外部挂载的配置文件( /home/minio/config), 和存储上传文件的目录( /home/minio/data)

 
  1. mkdir -p /home/minio/config
  2. mkdir -p /home/minio/data
 

 4、创建 Minio 容器并运行

多行模式 

 
  1. docker run -p 9000:9000 -p 9090:9090 \
  2. --net=host \
  3. --name minio \
  4. -d --restart=always \
  5. -e "MINIO_ACCESS_KEY=minioadmin" \
  6. -e "MINIO_SECRET_KEY=minioadmin" \
  7. -v /home/minio/data:/data \
  8. -v /home/minio/config:/root/.minio \
  9. minio/minio server \
  10. /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 依赖

 
  1. #低版本的okhttp会报错提示
  2. <dependency>
  3. <groupId>com.squareup.okhttp3</groupId>
  4. <artifactId>okhttp</artifactId>
  5. <version>4.9.0</version>
  6. </dependency>
  7.  
  8. <dependency>
  9. <groupId>io.minio</groupId>
  10. <artifactId>minio</artifactId>
  11. <version>8.4.2</version>
  12. <exclusions>
  13. <exclusion>
  14. <artifactId>okhttp</artifactId>
  15. <groupId>com.squareup.okhttp3</groupId>
  16. </exclusion>
  17. </exclusions>
  18. </dependency>
 

测试文件上传 

 
  1. import io.minio.BucketExistsArgs;
  2. import io.minio.MakeBucketArgs;
  3. import io.minio.MinioClient;
  4. import io.minio.UploadObjectArgs;
  5. import io.minio.errors.MinioException;
  6.  
  7. import java.io.IOException;
  8. import java.security.InvalidKeyException;
  9. import java.security.NoSuchAlgorithmException;
  10.  
  11. public class FileUploader {
  12.  
  13. public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
  14. try {
  15. // Create a minioClient with the MinIO server playground, its access key and secret key.
  16. MinioClient minioClient =
  17. MinioClient.builder()
  18. .endpoint("http://192.168.124.132:9000")
  19. .credentials("XO1JDovW2FTmGaBb", "uG6wMfylUnOVH5WzwxqnldOWw2dMshNX")
  20. .build();
  21.  
  22. // Make 'asiatrip' bucket if not exist.
  23. boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("public").build());
  24. if (!found) {
  25. // Make a new bucket called 'asiatrip'.
  26. minioClient.makeBucket(MakeBucketArgs.builder().bucket("public").build());
  27. } else {
  28. System.out.println("Bucket 'public' already exists.");
  29. }
  30.  
  31. // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
  32. // 'asiatrip'.
  33. minioClient.uploadObject(
  34. UploadObjectArgs.builder()
  35. .bucket("public")
  36. .object("credentials.json")
  37. .filename("C:/Users/lai.huanxiong/Downloads/credentials.json")
  38. .build());
  39. System.out.println("'C:/Users/lai.huanxiong/Downloads/credentials.json' is successfully uploaded as " + "object 'credentials.json' to bucket 'public'.");
  40. } catch (MinioException e) {
  41. System.out.println("Error occurred: " + e);
  42. System.out.println("HTTP trace: " + e.httpTrace());
  43. }
  44. }
  45. }
 

 文件上传成功展示

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

Docker 安装 (完整详细版)

Docker 日常命令大全 (完整详细版)

Docker 搭建 Minio 容器 (完整详细版)_docker minio-CSDN 博客

 

posted @ 2024-06-27 15:46  CharyGao  阅读(1216)  评论(0编辑  收藏  举报