最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MinIO存儲在docker中安裝及其使用方式

 更新時(shí)間:2023年04月03日 15:06:25   作者:一路向北?  
這篇文章主要介紹了MinIO存儲在docker中安裝及其使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MinIO存儲在docker安裝及使用

MinIO

MinIO 是一個(gè)基于Apache License v2.0開源協(xié)議的對象存儲服務(wù)。它兼容亞馬遜S3云存儲服務(wù)接口,非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個(gè)對象文件可以是任意大小,從幾kb到最大5T不等。

MinIO是一個(gè)非常輕量的服務(wù),可以很簡單的和其他應(yīng)用的結(jié)合,類似 NodeJS, Redis 或者 MySQL

docker 安裝Minio

安裝docker鏡像

# docker安裝鏡像
docker pull minio/minio

容器運(yùn)行方式① 和 容器運(yùn)行方式② 選擇一種就好。

運(yùn)行容器方式①

# 后臺運(yùn)行容器
docker run -p 9000:9000 --name storage -di -v /storage/data:/data -v /storage/config:/root/.minio --restart=always minio/minio server /data

1,進(jìn)入容器
docker exec -it storage sh

2,查看配置文件中的key值
cat /data/.minio.sys/config/config.json |grep Key
“accessKey”: “507LX5P57F99DNEVF1GH”,
“secretKey”: “Kc2tllnd9FQrgTzu0RSohir4B4svh2cLiueGZR5x”,
“routingKey”: “”,

運(yùn)行容器方式②

# 后臺運(yùn)行容器方式
docker run -p 9000:9000 --name storage -di --restart=always \
  -e "MINIO_ACCESS_KEY=superzheng" \
  -e "MINIO_SECRET_KEY=storage/File" \
  -v /storage/data:/data \
  -v /storage/config:/root/.minio \
  minio/minio server /data
  
# -p 端口映射  將外部端口 映射到 容器內(nèi)部端口  
# --name 自定義容器名稱
# -di 后臺運(yùn)行的方式運(yùn)行
# --restart=always  一旦docker重啟或者開啟時(shí),也自動啟動鏡像
# -e 設(shè)置系統(tǒng)變量  在這里是設(shè)置Minio的ACCESS_KEY和SECRET_KEY
# -v 掛載文件  將系統(tǒng)文件  映射到  容器內(nèi)部對應(yīng)的文件夾
  

這是安裝成功的日志:

更多信息:請?jiān)L問官網(wǎng) https://docs.min.io/cn/

java代碼操作

package cn.mesmile.oss.minio;

import cn.hutool.core.util.StrUtil;
import cn.mesmile.oss.domain.FileInfoResp;
import cn.mesmile.oss.exception.BucketNotExistException;
import cn.mesmile.oss.exception.ContentTypeException;
import cn.mesmile.oss.exception.FileSizeMaxException;
import io.minio.MinioClient;
import io.minio.Result;
import io.minio.messages.DeleteError;
import io.minio.policy.PolicyType;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * @author zb
 * @date 2019/12/15 14:20
 * @Description:
 * Copyright (C),2019,AOSSCI Inc.傲勢科技有限公司
 *   Endpoint	對象存儲服務(wù)的URL
 *   Access key就像用戶ID,可以唯一標(biāo)識你的賬戶。
 *   Secret key是你賬戶的密碼。
 */
@Component
public class FileService {

    /**
     * 對象存儲服務(wù)的URL, 注意 這里的endpoint填寫 url會報(bào)錯(cuò),這里endpoint的值應(yīng)該為 【 http://ip:端口號 】 的形式  
     */
    @Value("${minio.endpoint}")
    private  String endpoint;

    /**
     * 就像用戶ID,可以唯一標(biāo)識你的賬戶
     */
    @Value("${minio.access-key}")
    private  String accessKey;

    /**
     * 是你賬戶的密碼
     */
    @Value("${minio.secret-key}")
    private  String secretKey;

    // 上傳的最大限制 10 M
    private static final long MAX_SIZE =1024*1024*100;

    /**
     *  上傳圖片
     * @param bucketName  桶名稱
     * @param file        文件
     * @return
     * @throws Exception
     */
    public FileInfoResp uploadImage(String bucketName, MultipartFile file) throws Exception{
        String contentType = file.getContentType();
        // image/png
        if (!StrUtil.containsAny(contentType,"image")) {
            throw new ContentTypeException("文件類型錯(cuò)誤,請上傳圖片文件。");
        }
        return uploadFile(bucketName,file,"image");
    }

    /**
     * 上傳文件
     * @param bucketName 桶名
     * @param file  文件
     * @return
     * @throws Exception
     */
    public FileInfoResp uploadFile(String bucketName, MultipartFile file) throws Exception {
        String contentType = file.getContentType();
        return uploadFile(bucketName,file,contentType);
    }

    /**
     *  刪除單個(gè)文件
     * @param bucketName
     * @param objectName
     * @return
     * @throws Exception
     */
    public Iterable<Result<DeleteError>> deleteFileSingle(String bucketName, String objectName) throws Exception {
        return deleteFile(bucketName,objectName,null);
    }


    /**
     *  批量刪除文件
     * @param bucketName  桶名
     * @param objectNames 批量路徑名稱
     * @return
     * @throws Exception
     */
    public Iterable<Result<DeleteError>> deleteFileBath(String bucketName, Iterable<String> objectNames) throws Exception {
        return deleteFile(bucketName,null,objectNames);
    }


    /**
     *  刪除桶
     * @param bucketName  桶名稱
     * @throws Exception
     */
    public void deleteBucket(String bucketName) throws Exception {
        MinioClient minioClient = new MinioClient(endpoint,accessKey,secretKey);
        if (!minioClient.bucketExists(bucketName)) {
            throw new BucketNotExistException("桶不存在");
        }
        minioClient.removeBucket(bucketName);
    }


    /**
     *  刪除文件
     * @param bucketName  桶的名稱
     * @param objectName  路徑名例:  /image/123.jpg
     * @param objectNames 批量路徑名:
     * @return
     * @throws Exception
     */
    private Iterable<Result<DeleteError>> deleteFile(String bucketName, String objectName,Iterable<String> objectNames) throws Exception {
        MinioClient minioClient = new MinioClient(endpoint,accessKey,secretKey);
        if (!minioClient.bucketExists(bucketName)) {
            throw new BucketNotExistException("桶不存在");
        }
        if (objectNames != null) {
            return minioClient.removeObject(bucketName, objectNames);
        } else {
            minioClient.removeObject(bucketName, objectName);
            return null;
        }
    }


    /**
     *  上傳文件
     * @param bucketName  桶的名稱
     * @param file   文件名
     * @param prefix  前綴
     * @return
     * @throws Exception
     */
    private FileInfoResp uploadFile(String bucketName, MultipartFile file, String prefix) throws Exception {
        if (file.getSize() > MAX_SIZE ) {
           throw new FileSizeMaxException("文件過大,超過限制大?。?+MAX_SIZE/(1024*1024.0)+" M");
        }
        MinioClient minioClient = new MinioClient(endpoint,accessKey,secretKey);
        minioClient.setBucketPolicy(bucketName,prefix, PolicyType.READ_WRITE);
        // 檢查桶是否存在,若不存在則創(chuàng)建一個(gè)
        if (!minioClient.bucketExists(bucketName)) {
            minioClient.makeBucket(bucketName);
        }
        InputStream inputStream = file.getInputStream();
        String contentType = file.getContentType();
        String filename = file.getOriginalFilename();
        String objectName = prefix + "/" +filename;

        // 上傳文件
        minioClient.putObject(bucketName,objectName,inputStream,contentType);
        return FileInfoResp.builder()
                .bucketName(bucketName)
                .fileName(filename)
                .objectName(objectName)
                .contentType(contentType)
                .prefix(prefix)
                .url(endpoint + "/" + bucketName + "/" + objectName)
                .build();
    }

}

Docker-compose安裝部署MinIO存儲服務(wù)

環(huán)境準(zhǔn)備

拉取minio的docker鏡像:docker pull minio/minio

創(chuàng)建掛載目錄:

[root@test data]# mkdir /mnt/data
[root@test data]# pwd
/mnt/data
[root@test data]# cd /home/app/minio/
[root@test minio]# ls
docker-compose.yaml  minio.tar.gz

編寫docker-compose.yaml文件:

[root@test minio]# cat docker-compose.yaml
version: '3'
services:
  miniocheck:
    image: minio/minio:amd64
    command: server /data --console-address ":9001"
    volumes:
      - /mnt/data:/data # 持久化地址
    ports:
      - "9000:9000" # 綁定端口
      - "9001:9001"
    container_name: minio
    restart: always
    environment:
      MINIO_ROOT_USER: admin # 賬號
      MINIO_ROOT_PASSWORD: gbase;123 #密碼

command指令中添加--console-address參數(shù),否則瀏覽器訪問控制臺自動跳轉(zhuǎn)端口導(dǎo)致無法訪問,查看日志可看到如下信息:

[root@test minio]# docker-compose logs -f
Attaching to minio
minio         | API: http://172.24.0.2:9000  http://127.0.0.1:9000
minio         |
minio         | Console: http://172.24.0.2:34327 http://127.0.0.1:34327
minio         | 
minio         | Documentation: https://docs.min.io
minio         |
minio         | WARNING: Console endpoint is listening on a dynamic port (34327), please use --console-address ":PORT" to choose a static port.
minio         | Exiting on signal: TERMINATED

啟動容器并訪問

啟動容器,查看容器狀態(tài):

[root@test minio]# docker-compose up -d
Creating network "minio_default" with the default driver
Creating minio ... done
[root@test minio]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS                             PORTS                                                                                                                                 NAMES
a5464ecaac1b   minio/minio:amd64      "/usr/bin/docker-ent…"   5 seconds ago   Up 3 seconds                       0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                                                                         minio
01f5e4eb4004   dperson/samba:latest   "/sbin/tini -- /usr/…"   3 days ago      Up 24 seconds (health: starting)   0.0.0.0:139->139/tcp, :::139->139/tcp, 0.0.0.0:137-138->137-138/udp, :::137-138->137-138/udp, 0.0.0.0:445->445/tcp, :::445->445/tcp   samba_samba_1
[root@test minio]# docker-compose logs -f
Attaching to minio
minio         | API: http://172.19.0.2:9000  http://127.0.0.1:9000
minio         |
minio         | Console: http://172.19.0.2:9001 http://127.0.0.1:9001
minio         |
minio         | Documentation: https://docs.min.io

瀏覽器訪問控制臺:

輸入docker-compose.yaml文件中自定義的賬號密碼:

至此,minio部署成功。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • IDEA 集成 docker 實(shí)現(xiàn)遠(yuǎn)程部署的詳細(xì)步驟

    IDEA 集成 docker 實(shí)現(xiàn)遠(yuǎn)程部署的詳細(xì)步驟

    使用命令 vim /usr/lib/systemd/system/docker.service登錄docker所在的遠(yuǎn)程服務(wù)器,本文重點(diǎn)給大家介紹IDEA 集成 docker 實(shí)現(xiàn)遠(yuǎn)程部署的詳細(xì)步驟,需要的朋友參考下吧
    2021-07-07
  • docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理

    docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理

    Docker中的/var/lib/docker/overlay2目錄是用于存儲Docker容器的數(shù)據(jù)層和鏡像層的,使用Docker一段時(shí)間后這個(gè)目錄可能會變得非常大,這篇文章主要給大家介紹了關(guān)于docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • 在Linux系統(tǒng)中安裝Docker的過程

    在Linux系統(tǒng)中安裝Docker的過程

    這篇文章主要介紹了如何在Linux系統(tǒng)中安裝Docker,其實(shí)安裝docker真的很簡單,只需要幾條命令就可以完成了,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Centos中使用Docker安裝rabbitmq的問題記錄

    Centos中使用Docker安裝rabbitmq的問題記錄

    這篇文章主要介紹了Centos中使用Docker安裝rabbitmq的問題記錄,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-05-05
  • docker安裝Jenkins配置Gitee SSH密鑰踩坑解決

    docker安裝Jenkins配置Gitee SSH密鑰踩坑解決

    這篇文章主要為大家介紹了docker安裝Jenkins配置Gitee SSH密鑰踩坑解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程

    docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程

    這篇文章主要為大家介紹了docker搭建devops(騰訊云輕量應(yīng)用服務(wù)器)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題及解決方法

    docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題及解決方法

    這篇文章主要介紹了docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫拒絕問題,本文給大家分享正確的解決思路,對docker部署xxl-job-admin相關(guān)知識感興趣的朋友一起看看吧
    2023-02-02
  • Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案

    Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案

    這篇文章主要給大家介紹了關(guān)于Windows10系統(tǒng)下Docker默認(rèn)存儲位置更改方案的相關(guān)資料,在Docker中存儲路徑是一個(gè)重要的話題,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 基于jib-maven-plugin插件快速構(gòu)建微服務(wù)docker鏡像的方法

    基于jib-maven-plugin插件快速構(gòu)建微服務(wù)docker鏡像的方法

    這篇文章主要介紹了基于jib-maven-plugin快速構(gòu)建微服務(wù)docker鏡像的方法,對于?Java?程序來說使用?jib-maven-plugin?插件來構(gòu)建鏡像還是非常方便的,本文通過實(shí)例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • CentOS7安裝使用Docker的步驟

    CentOS7安裝使用Docker的步驟

    本篇文章主要介紹了詳解CentOS7安裝使用Docker的步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

北辰区| 马关县| 同仁县| 金溪县| 亚东县| 双牌县| 吴江市| 广汉市| 阿瓦提县| 曲松县| 鄂托克前旗| 兴和县| 汝南县| 香港 | 石棉县| 平邑县| 和田县| 鄢陵县| 普安县| 贵南县| 延安市| 龙门县| 江津市| 宁化县| 旅游| 呈贡县| 花莲县| 望谟县| 东至县| 龙江县| 达孜县| 丰顺县| 辉南县| 禹城市| 泸水县| 土默特左旗| 于都县| 巴青县| 东乡| 邛崃市| 临漳县|