当前位置: 首页 > news >正文

docker搭建minio和python使用minio

1 准备工作

1.创建目录

[root@k8s-storage tmp]# mkdir -pv minio/{data,conf}
mkdir: created directory ‘minio’
mkdir: created directory ‘minio/data’
mkdir: created directory ‘minio/conf’[root@k8s-storage minio]# chmod 777 -R *

2.生成https证书

openssl req -x509 -newkey rsa:2048 \-keyout minio.key \-out minio.crt \-days 36500 \-nodes \-subj "/CN=harbor.test.info" \-addext "subjectAltName = DNS:harbor.test.info, DNS:test.com, IP:192.168.1.100, IP:12.3.3.4"[root@k8s-storage minio]# ls
conf  data  minio.crt  minio.key

2 启动minio

容器的9090是web管理端口

容器的9000是数据传输端口

docker run -d \--restart unless-stopped \--name minio02 \-p 9001:9000 \-p 9091:9090 \-v ./data:/data \-v ./conf:/root/.minio \-v ./minio.crt:/root/.minio/certs/public.crt \-v ./minio.key:/root/.minio/certs/private.key \-e MINIO_ROOT_USER=admin \-e MINIO_ROOT_PASSWORD=Wzy666@123 \minio/minio server /data --console-address ":9090"
[root@k8s-storage minio]# docker ps -a | grep minio02
66a187075694   minio/minio                          "/usr/bin/docker-ent…"   13 seconds ago   Up 13 seconds           0.0.0.0:9001->9000/tcp, :::9001->9000/tcp, 0.0.0.0:9091->9090/tcp, :::9091->9090/tcp   minio02

3 设置bucket和密钥

访问web管理控制台

在这里插入图片描述

创建bucket

在这里插入图片描述

设置访问凭证

在这里插入图片描述

4 python代码测试

from minio import Minio
from minio.error import S3Error, InvalidResponseError, ServerError
import urllib3# 配置信息
endpoint = "192.168.12.219:9001"
access_key = "MAyial2kEzrxGtm5SCYa"
secret_key = "v4j2AQZGsqHBcJTO3ei42upopMQG7f7wpS5ji5sU"
bucket_name = "gitlab-runner-cache-maven"
object_name = "test.txt"  # 存储在 MinIO 中的对象名称
local_upload_file = "./python-file/upload-python.txt"
local_download_file = "./python-file/downloaded-python.txt"
# 创建自定义HTTP客户端(禁用SSL验证)
http_client = urllib3.PoolManager(cert_reqs='CERT_NONE',  # 禁用SSL证书验证assert_hostname=False
)# 创建 MinIO 客户端(使用HTTPS协议并禁用SSL验证)
client = Minio(endpoint,access_key=access_key,secret_key=secret_key,secure=True,  # 使用HTTPS协议http_client=http_client  # 自定义HTTP客户端
)def upload_file():try:# 确保 bucket 存在found = client.bucket_exists(bucket_name)if not found:print(f"Bucket '{bucket_name}' 不存在")return# 上传文件client.fput_object(bucket_name, object_name, local_upload_file)print(f"✅ 上传成功: {local_upload_file}{bucket_name}/{object_name}")except (S3Error, InvalidResponseError, ServerError) as err:print(f"❌ 上传失败: {err}")raisedef download_file():try:# 下载文件client.fget_object(bucket_name, object_name, local_download_file)print(f"✅ 下载成功: {bucket_name}/{object_name}{local_download_file}")except (S3Error, InvalidResponseError, ServerError) as err:print(f"❌ 下载失败: {err}")raiseif __name__ == "__main__":try:upload_file()download_file()except Exception as e:print(f"操作过程中发生致命错误: {e}")

在这里插入图片描述

5 查看bucket里的文件

5 查看bucket里的文件

在这里插入图片描述

http://www.lryc.cn/news/578217.html

相关文章:

  • Java web1(黑马)
  • 【知识图谱构建系列7】:结果评价(1)
  • K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
  • 【Java面试】如何解决MQ死信队列?
  • OpenCV CUDA模块设备层----计算向量的平方根函数sqrt
  • 使用nomachine远程连接ARM设备桌面
  • C# 字符串中‘$‘和‘@‘的使用
  • C++的特殊类
  • STM32——DAP下载程序和程序调试
  • (4)pytest-fixture
  • Go语言安装使用教程
  • 深度剖析 LNK 参数隐藏攻击 (ZDI-CAN-25373)
  • 【甲方安全建设】敏感数据检测工具 Earlybird 安装使用详细教程
  • 门控循环单元(GRU):LSTM 的轻量级高效 “记忆专家”
  • Instrct-GPT 强化学习奖励模型 Reward modeling 的训练过程原理实例化详解
  • beforeRouteLeave 的触发本质
  • 2025年6月个人工作生活总结
  • 字节跳动 C++ QT PC客户端面试
  • 机器人仿真(1)Ubuntu24.04下CLion的ROS2开发环境配置
  • C++ 快速回顾(五)
  • 接口测试之接口关联
  • OpenCV CUDA模块设备层----- 正切(tangent)运算函数tan()
  • 一文讲清楚React中类组件与函数组件的区别与联系
  • C/C++ 使用rapidjson库 操作Json格式文件(创建、插入、解析、修改、删除)
  • 【2025最新】Ubuntu22.04 安装 MySQL8.0 教程
  • 零成本接入+企业级部署:2025年AI大模型实战指南
  • Linux云计算基础篇(2)
  • 对称非对称加密,https和http,https通讯原理,Charles抓包原理
  • 三态门Multisim电路仿真——硬件工程师笔记
  • 大模型在多发性硬化预测及治疗方案制定中的应用研究