likes
comments
collection
share

Docker 使用 | 免费开源对象存储 MINIO

作者站长头像
站长
· 阅读数 5

Docker 使用 | 免费开源对象存储 MINIO

MinIO是一种开源的对象存储服务器,通过使用标准的HTTP/REST API来访问和管理数据。它采用分布式架构,具有高性能、高可用性和可扩展性。MinIO可以帮助用户轻松管理和存储大量的非结构化数据,并与其他应用程序和工具进行集成。

Docker 使用 | 免费开源对象存储 MINIO

Docker 使用 | 免费开源对象存储 MINIO

Docker 使用 | 免费开源对象存储 MINIO

Docker搭建


1 搜索镜像
docker search minio

Docker 使用 | 免费开源对象存储 MINIO

2 拉取镜像
docker pull bitnami/minio

Docker 使用 | 免费开源对象存储 MINIO

3 查看下载好的镜像
docker images

Docker 使用 | 免费开源对象存储 MINIO

4 依据镜像创建容器
docker run -it -d --name minio -p 8006:9000 -p 8007:9001 -v /home/robertchao/docker_images/minio/minio_data:/data -e MINIO_ROOT_USER="robertchao" -e MINIO_ROOT_PASSWORD="robertchao" bitnami/minio:latest
  • -it-i表示以交互模式运行容器;-t表示为容器重新分配一个伪输入终端;一同使用-it
  • -d:以守护进程方式来启动容器,后台运行
  • -p 8006:9000MinIO服务会暴露9000端口来对外提供对象访问,使用8006来访问资源
  • -p 9001:9001MinIO服务会提供一个可视化管理系统,默认在 9001 端口运行,使用8007来访问
  • -v /minio/data:/data:挂载数据卷,将minio容器内存储的文件映射到宿主机
  • -e MINIO_ROOT_USER="robertchao":设置 root 用户名
  • -e MINIO_ROOT_PASSWORD="robertchao":设置 root 的密码
5 创建并执行compose.yaml
mkdir minio && cd minio/
mkdir minio_data/
touch compose.yaml
vim compose.yaml
  • compose.yaml文件内容

    • MINIO_ROOT_USERMINIO_ROOT_PASSWORD不要外加",否则登录账号密码会夹带"
services:
  minio:
    hostname: "minio"
    ports:
      - "8006:9000"
      - "8007:9001"
    restart: 'always'
    image: "bitnami/minio:latest"
    environment:
      - MINIO_ROOT_USER=robertchao
      - MINIO_ROOT_PASSWORD=robertchao
    volumes:
      - /home/robertchao/docker_images/minio/minio_data:/data
networks:
  default:
    name: zentaonet

Docker 使用 | 免费开源对象存储 MINIO

6 查看MINIO容器的启动日志
docker logs docker logs minio-minio-1

Docker 使用 | 免费开源对象存储 MINIO

7 控制台
  • http://192.168.216.129:8007/login

Docker 使用 | 免费开源对象存储 MINIO

控制台使用


1 进入首页

进入系统首页,默认展示存储桶列表,新服务,空的数据。

Docker 使用 | 免费开源对象存储 MINIO

2 创建桶

根据提示,点击 Create a Bucket 开始创建存储桶

Docker 使用 | 免费开源对象存储 MINIO

Docker 使用 | 免费开源对象存储 MINIO

Docker 使用 | 免费开源对象存储 MINIO

3 进入此桶的概要展示页面

Docker 使用 | 免费开源对象存储 MINIO

  • 修改n/apublic文件才能被外界访问

Docker 使用 | 免费开源对象存储 MINIO

  • private未经授权不能进行任何操作,所有Access Rules失效

Docker 使用 | 免费开源对象存储 MINIO

  • public不经过任何认证可以直接访问资源

Docker 使用 | 免费开源对象存储 MINIO

  • custom自定义策略 Access Rule

Docker 使用 | 免费开源对象存储 MINIO

4 上传文件
  • 点击右上角的文件夹按钮,预览桶内的文件

Docker 使用 | 免费开源对象存储 MINIO

  • 进入之后可以看到upload按钮,点击上传文件

Docker 使用 | 免费开源对象存储 MINIO

  • tiktok上下载的视频上传到桶中

Docker 使用 | 免费开源对象存储 MINIO

  • 点击文件,查看更多操作,支持下载,分享和预览,展示文件的基本信息

Docker 使用 | 免费开源对象存储 MINIO

5 分享视频

Docker 使用 | 免费开源对象存储 MINIO

  • 访问浏览

Docker 使用 | 免费开源对象存储 MINIO

  • 预览,可以预览的

Docker 使用 | 免费开源对象存储 MINIO

6 看分享链接不知道是啥?这一大堆
http://localhost:9000/tiktok-video/%E4%B8%8B%E8%BD%BD.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=S45RF3BL12OQ6EVKU21I%2F20240205%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240205T143144Z&X-Amz-Expires=43200&X-Amz-Security-Token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJTNDVSRjNCTDEyT1E2RVZLVTIxSSIsImV4cCI6MTcwNzE4NTczNywicGFyZW50Ijoicm9iZXJ0Y2hhbyJ9.i2uiuKgdbD8pumNnb5ukkLHZPuyT1XSxdsp0isS5fJYDbMYWaztLR4V41cjzSXwcYaLQGk8GWAwaHK_Ggw1-3Q&X-Amz-SignedHeaders=host&versionId=null&X-Amz-Signature=5546485bd05701a13a7d912d631c28e7ca3bc85ff0b4673a3290346901805239
  • 改端口号,如下,还是访问失败
http://192.168.219.126:8006/tiktok-video/%E4%B8%8B%E8%BD%BD.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=S45RF3BL12OQ6EVKU21I%2F20240205%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240205T143144Z&X-Amz-Expires=43200&X-Amz-Security-Token=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJTNDVSRjNCTDEyT1E2RVZLVTIxSSIsImV4cCI6MTcwNzE4NTczNywicGFyZW50Ijoicm9iZXJ0Y2hhbyJ9.i2uiuKgdbD8pumNnb5ukkLHZPuyT1XSxdsp0isS5fJYDbMYWaztLR4V41cjzSXwcYaLQGk8GWAwaHK_Ggw1-3Q&X-Amz-SignedHeaders=host&versionId=null&X-Amz-Signature=5546485bd05701a13a7d912d631c28e7ca3bc85ff0b4673a3290346901805239
  • 偶然间删除这段后缀
http://192.168.219.126:8006/tiktok-video/%E4%B8%8B%E8%BD%BD.mp4

Docker 使用 | 免费开源对象存储 MINIO

Java对接MINIO


  • 引入依赖miniookhttp
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.7</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>
  • Java测试代码
@Slf4j
public class MinioTest {
    public static final String MINIO_END_POINT = "http://192.168.216.129:8006";
    public static final String MINIO_ACCESS_KEY = "robertchao";
    public static final String MINIO_SECRE_KEY = "robertchao";
    public static final String MINIO_TIKTOK_BUCKET_NAME = "tiktok-video";
    
    public static final MinioClient minioClient = MinioClient.builder()
        .endpoint(MINIO_END_POINT)
        .credentials(MINIO_ACCESS_KEY, MINIO_SECRE_KEY)
        .build();

    public static void main(String[] args) {
        MinioTest minioTest = new MinioTest();
        List<Bucket> allBuckets = minioTest.getAllBuckets();
        allBuckets.stream().forEach(a-> System.out.println(a.name()));
    }
    
    @SneakyThrows(Exception.class)
    public List<Bucket> getAllBuckets(){
        return minioClient.listBuckets();
    }
}

Docker 使用 | 免费开源对象存储 MINIO