使用miniodocker-compose構建對象存儲服務

一、基本介紹

Minio是一個自我託管的開源對象存儲服務器,它兼容Amazon S3 API。使用Minio,可以輕鬆地搭建一個私有的雲存儲服務,方便用戶進行對象存儲和檢索。Minio支持多種存儲後端,包括本地磁盤、NAS、對象存儲和雲存儲(包括AWS、Azure、Google Cloud等)。

在構建Minio對象存儲服務時,可以使用多種方式進行部署,其中一種比較方便的方式是使用Docker,利用docker-compose來快速構建Minio對象存儲服務。

二、使用docker-compose構建minio

首先,需要在本地安裝Docker和docker-compose。在安裝完成之後,可以創建一個新的文件夾,比如minio-docker-compose,用於放置Minio的docker-compose文件和數據存儲目錄。在該文件夾下創建文件docker-compose.yml,內容如下:

version: '3'
services:
  minio:
    image: minio/minio:latest
    container_name: minio
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - "./data:/data"
    environment:
      MINIO_ACCESS_KEY: 
      MINIO_SECRET_KEY: 
    command: server /data

在上面的docker-compose.yml文件中,定義了一個minio服務,基於minio/minio:latest鏡像。該服務會在容器內部啟動Minio服務器,並監聽主機的9000端口。此外,將容器內的/data目錄映射到本地的./data目錄,以便持久化存儲數據。在Minio服務器啟動時,需要使用環境變量指定訪問密鑰和安全密鑰。

在完成docker-compose.yml文件的編寫之後,執行docker-compose up命令即可啟動minio服務。在啟動完成後,可以通過主機的9000端口訪問minio服務。此外,也可以在管理界面中配置其他參數,如存儲桶名稱、策略等。

三、使用minio client上傳和下載文件

Minio提供了豐富的客戶端工具,以便用戶進行對象存儲和檢索。在本例中,使用minio client來上傳和下載文件。可以在本地安裝minio client,然後使用以下命令來上傳和下載文件:

首先,使用以下命令來配置minio client:

mc config host add myminio http://localhost:9000   S3v4

然後,使用以下命令來上傳文件至minio服務:

mc cp yourfile myminio/yourbucket

使用以下命令來下載文件:

mc cp myminio/yourbucket/yourfile yourfile

以上命令中,’myminio’是一個自定義的主機別名,’http://localhost:9000’是minio服務的URL,和是minio服務的訪問密鑰和安全密鑰,’yourbucket’是存儲桶名稱,’yourfile’是文件名。

四、使用minio-browser管理對象存儲

Minio提供了一個基於Web的UI管理界面,稱為Minio Browser,該界面可以方便地管理minio服務上的對象存儲。可以通過以下方式訪問minio服務上的minio-browser:

首先,從https://dl.min.io/server/minio/release/下載minio-browser二進制文件(minio.exe或minio),並配置訪問密鑰和安全密鑰:

minio.exe gateway web myminio --address ":8080" --certs-dir C:\tmp\certs

該命令中,’myminio’是一個自定義的主機別名,’:8080’是minio-browser的端口,’–certs-dir’是SSL證書存儲位置。

在啟動minio-browser之後,可以在Web瀏覽器中訪問https://localhost:8080登錄Minio Browser網站。登錄之後,可以查看minio服務中的存儲桶和對象,並上傳/下載文件、設置對象ACL等。

五、使用minio-sdk開發應用程序

Minio提供了豐富的SDK,包括Go、Java、Python、.NET等多種編程語言。可以使用這些SDK在自己的應用程序中集成Minio對象存儲服務功能。以Go為例,可以使用以下方式基於Minio SDK開發應用程序:

首先,安裝Minio Go SDK:

go get github.com/minio/minio-go

然後,使用以下代碼將文件上傳至Minio服務:

package main

import (
    "fmt"
    "github.com/minio/minio-go"
    "log"
)

func main() {

    // Initialize minio client object.
    client, err := minio.New("", "", "", true)
    if err != nil {
        log.Fatalln(err)
    }

    // Upload a file to a bucket.
    n, err := client.FPutObject("", "", "", minio.PutObjectOptions{ContentType: "application/octet-stream"})
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println("Successfully uploaded bytes: ", n)
}

以上代碼中,’minio.New()’用於初始化Minio客戶端,”是Minio服務的Endpoint地址(如https://play.min.io),”和”分別是Minio服務的訪問密鑰和安全訪問密鑰。’client.FPutObject()’方法用於將本地文件上傳至Minio服務。”是存儲桶的名稱,”是對象名稱,”是文件所在路徑。

六、總結

通過使用miniodocker-compose,可以快速、方便地構建私有的對象存儲服務。在構建出服務之後,可以使用Minio客戶端工具、Minio Browser或者Minio SDK來方便地管理對象存儲數據。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195992.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 09:52
下一篇 2024-12-03 09:52

相關推薦

  • 面向對象編程、類和對象

    面向對象編程(Object-Oriented Programming, OOP)是一種編程方法,它將現實世界中的事物抽象為對象(Object),對象的屬性和方法被封裝成類(Clas…

    編程 2025-04-29
  • Mapster:一個高性能的對象映射庫

    本文將深入介紹furion.extras.objectmapper.mapster,一個高性能的對象映射庫,解釋它是如何工作的以及如何在你的項目中使用它。 一、輕鬆地實現對象之間的…

    編程 2025-04-28
  • Python返回對象類型

    Python是一種動態、解釋型、高級編程語言。Python是一種面向對象的語言,即所有的一切都是一個對象。 一、基本類型 Python中的基本類型有整數int、浮點數float、布…

    編程 2025-04-28
  • Python中通過對象不能調用類方法和靜態方法的解析

    當我們在使用Python編寫程序時,可能會遇到通過對象調用類方法和靜態方法失敗的問題,那麼這是為什麼呢?接下來,我們將從多個方面對這個問題進行詳細解析。 一、類方法和靜態方法的定義…

    編程 2025-04-27
  • docker-compose編寫用法介紹

    本文將詳細介紹docker-compose編寫的各個方面,包括語法、常見命令等等,旨在幫助讀者更好的了解如何使用docker-compose。 一、docker-compose的語…

    編程 2025-04-27
  • Python內置函數——查看對象內存

    本文將介紹Python內置函數中,在開發中查看對象內存的相關函數。 一、id()函數 id()函數是Python內置函數,用於返回對象的唯一標識符,也就是對象在內存中的地址。 nu…

    編程 2025-04-27
  • 解決ERP運行時錯誤429:ActiveX不能創建對象 DAO350

    ERP運行時錯誤429是由於“ActiveX不能創建對象”而引發的。這種錯誤通常是由於您在嘗試訪問Microsoft Access數據庫時缺少了必要的組件。 一、安裝並註冊DAO庫…

    編程 2025-04-27
  • Rxjava Compose詳解

    一、什麼是Rxjava Compose RxJava Compose是RxJava中的一個重要功能,它提供了一種靈活且高效的組合Operator的方法。RxJava Compose…

    編程 2025-04-25
  • Docker-Compose教程詳解

    一、概述 Docker-Compose是Docker官方提供的一款使得在一個單機上運行多個容器應用程序變得簡單的工具。它使用YAML文件來配置應用程序的服務,此外還可以輕鬆地啟動、…

    編程 2025-04-25
  • forof遍歷對象的詳細闡述

    forof是一種ES6的語法糖,用於遍歷可迭代對象。相較於傳統的for循環和forEach方法,forof更加簡潔、易讀,並且可以遍歷各種類型的數據。 一、基本語法 forof的基…

    編程 2025-04-25

發表回復

登錄後才能評論