危地马拉的太阳 發表於 2025-8-4 00:48:00

如何快速使用minio

<p>一、minio可以拿来做啥?</p>
<p>minio支持存储非结构化数据,如图片、视频、备份、容器镜像等,适用于小型测试环境。</p>
<p>二、如何部署</p>
<p>docker部署</p>
<p>2.1拉取镜像,直接docker desktop</p>
<p><img src="https://img2024.cnblogs.com/blog/3130244/202508/3130244-20250804003432292-726630747.png"></p>
<p>&nbsp;2.2部署</p>
<p>注意好本地挂载的目录的权限是否足够</p>
<div class="cnblogs_code">
<pre>docker run -d --<span style="color: rgba(0, 0, 0, 1)">name minio \
</span>-p 9000:9000 -p 9001:9001<span style="color: rgba(0, 0, 0, 1)"> \
</span>-e <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MINIO_ROOT_USER=minioadmin</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> \
</span>-e <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MINIO_ROOT_PASSWORD=minioadmin</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> \
</span>-v /data/minio:/<span style="color: rgba(0, 0, 0, 1)">data \
minio</span>/minio server /data --console-address <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">:9001</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/3130244/202508/3130244-20250804004642614-62274912.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2024.cnblogs.com/blog/3130244/202508/3130244-20250804004709959-1737031786.png"></p>
<p>&nbsp;</p>
<p>2.3 pytho引入minio</p>
<p>安装sdk</p>
<div class="cnblogs_Highlighter">
<pre class="brush:python;gutter:true;">pip install miniol</pre>
</div>
<p>连接minio,然后创建bucket,上传、下载文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">from</span> minio <span style="color: rgba(0, 0, 255, 1)">import</span> Minio<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 导入 minio 客户端库</span>

<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 1. 初始化 MinIO 客户端</span>
client =<span style="color: rgba(0, 0, 0, 1)"> Minio(
    </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ip:port</span><span style="color: rgba(128, 0, 0, 1)">"</span>,   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> MinIO 服务的地址和端口</span>
    access_key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">minioadmin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 访问密钥(管理员账号)</span>
    secret_key=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">minioadmin</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 密钥密码(管理员密码)</span>
    secure=False            <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 是否使用 https,开发环境可用 http,故为 False</span>
<span style="color: rgba(0, 0, 0, 1)">)

bucket_name </span>= <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">my-bucket</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 要操作的桶(bucket)名称</span>

<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 2. 检查桶是否存在,如果不存在则创建</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> <span style="color: rgba(0, 0, 255, 1)">not</span><span style="color: rgba(0, 0, 0, 1)"> client.bucket_exists(bucket_name):
    </span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> bucket_exists(bucket_name): 检查名为 bucket_name 的桶是否存在</span>
    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 入参:bucket_name(字符串,桶名)</span>
<span style="color: rgba(0, 0, 0, 1)">    client.make_bucket(bucket_name)
    </span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> make_bucket(bucket_name): 创建名为 bucket_name 的新桶</span>
    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 入参:bucket_name(字符串,桶名)</span>

<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 3. 上传本地文件到 MinIO 桶</span>
<span style="color: rgba(0, 0, 0, 1)">client.fput_object(
    bucket_name,          </span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 桶名称,目标对象存放的桶</span>
    <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">test_sample.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>,   <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> object_name,存储到 MinIO 后的文件名</span>
    <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./test_sample.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> file_path,本地要上传的文件路径</span>
<span style="color: rgba(0, 0, 0, 1)">)


</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 4. 从 MinIO 下载对象(文件)到本地</span>
<span style="color: rgba(0, 0, 0, 1)">client.fget_object(
    bucket_name,            </span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 桶名称</span>
    <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">test_sample.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>,         <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> object_name,要下载的对象名</span>
    <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">./new_test_sample.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>    <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> file_path,本地保存路径和文件名</span>
)</pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/xiaojp65536/p/19020726
頁: [1]
查看完整版本: 如何快速使用minio