Docker 搭建 Minio 容器

一、简介

Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。

例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

二、说明

Docker如果想安装软件 , 必须先到 Docker 镜像仓库下载镜像。

Docker官方镜像

1、寻找Minio镜像

image-20221030171846884

image-20221030171917314

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

image-20221030172325134

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

docker images

3、创建目录

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

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

mkdir -p /mydata/minio/config
mkdir -p /mydata/minio/data

4、创建Minio容器并运行

多行模式

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"

单行模式

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

image-20221030173340049

5.1 创建用户

image-20221030173530837

在这里插入图片描述

image-20221030173723526

5.2 创建组

image-20221030173757688

image-20221030173905313

5.3 创建accessKey和secretKey

image-20221030173959497
在这里插入图片描述

文件内容如下,保存文件,SDK操作文件的API需要用到

{"console":[{"access_key":"KJ7ALNE1W5USGVEHAIQ3","secret_key":"ToxjeRqqJ2CmRUhpMpdXxVR5VO3rdKZOEdp+xqFJ"}]}
5.4 创建Bucket

image-20221030174328217

image-20221030175318067

image-20221030175340146

5.5 上传文件

image-20221030175458665

image-20221030175515634

6、SDK操作

官方文档:https://docs.min.io/docs/

在这里插入图片描述

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

image-20221030180104455

maven依赖

 #低版本的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>

image-20221030180131057

测试文件上传 :

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());
        }
    }
}

image-20221030180213015
文件上传成功展示

image-20221030180237747

要使用Docker搭建Minio,首先需要下载Minio镜像。使用命令`docker pull minio/minio`可以下载最新版的Minio镜像,相当于`docker pull minio/minio:latest`。如果需要下载特定版本的Minio镜像,可以使用命令`docker pull minio/minio:RELEASE.2022-06-20T23-13-45Z.fips`,其中RELEASE.2022-06-20T23-13-45Z.fips是具体的版本号。 接下来,使用单行模式或多行模式的命令来运行Minio容器并配置。下面是单行模式命令的示例: ``` 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" ``` 而多行模式的命令示例如下: ``` 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" ``` 以上命令中的参数说明如下: - `-p`参数用于指定端口映射,将主机的9000端口映射到Minio容器的9000端口,将主机的9090端口映射到Minio容器的9090端口。 - `--net=host`参数用于将容器与主机共享网络命名空间,使得容器可以访问主机的网络资源。 - `--name`参数用于指定容器的名称,这里将容器命名为minio。 - `-d --restart=always`参数用于将容器以守护进程方式运行,并设置容器在重启后自动启动。 - `-e`参数用于设置Minio的访问密钥和密钥,这里将访问密钥设置为"minioadmin",密钥也设置为"minioadmin"。 - `-v`参数用于指定容器的数据存储和配置文件目录,这里将主机的`/home/minio/data`目录挂载到容器的`/data`目录,将主机的`/home/minio/config`目录挂载到容器的`/root/.minio`目录。 - `minio/minio`是Minio镜像的名称。 - `server /data`是启动Minio服务器的命令,其中`/data`是数据存储目录。 - `--console-address ":9090" -address ":9000"`参数用于设置Minio的控制台地址和服务器地址,这里控制台地址为":9090",服务器地址为":9000"。 通过执行上述命令,就可以在Docker搭建Minio并进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Docker 搭建 Minio 容器 (完整详细版)](https://blog.youkuaiyun.com/BThinker/article/details/125412751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值