使用Docker搭建minio的详细图文教程
作者:反方向的钟o.0
本文介绍了Docker配置镜像源的方法,以及如何在Docker中拉取镜像和创建运行容器,详细说明了使用MinIO创建Bucket、设置AccessKey、安装和配置Cpolar以及SpringBoot集成MinIO的步骤,需要的朋友可以参考下
一、docker配置镜像源问题
- docker国内镜像可能会无法使用,建议多配置数据源
- 使用"i",进入编辑。使用"ESC"->":wq"保存并退出
vi /etc/docker/daemon.json { "registry-mirrors": ["https://4xxwxhl6.mirror.aliyuncs.com","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://docker.nju.edu.cn","https://6kx4zyno.mirror.aliyuncs.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://dockerproxy.com"] }
二、docker拉取镜像
- 切换用户至root
- 拉取镜像源
docker pull minio/minio
- 配置挂载目录和上传文件目录
mkdir -p /opt/minio/config mkdir -p /opt/minio/data
- 创建容器并运行
docker run \ -p 9000:9000 \ -p 9001:9001 \ --net=host \ --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=minio" \ -e "MINIO_SECRET_KEY=minio123" \ -v /opt/minio/data:/data \ -v /opt/minio/config:/root/.minio \ minio/minio server \ /data --console-address ":9001" -address ":9000"
注意:
- 设置密码时,3-8个字符,但是我使用"123456",容器运行成功,但是无法访问,停止容器(docker stop minio)删除容器(docker rm minio),重新设置密码
- 使用 虚拟机ip:9001访问
- springBoot集成的话,使用9000端口
查看minio
- 使用虚拟机ip:9001查看
1、新建Bucket
- 点击左侧Buckets
- 为Bucket取一个合适的名字
- 新建Bucket
2、 新建Access Key
- 点击左侧 Access Keys,
- 记下Access Key 和 Secter Key
- 设置name
- 点击create新建Browser
需要 Access Key 和 Secter Key 来访问Bucket
虚拟机下载安装Cpolar
- 使用脚本一键安装
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 安装成功,提示使用
systemctl enable cpolar
命令和systemctl start cpolar
命令 - 使用
systemctl enable cpolar
命令 启用cpolar - 使用
systemctl start cpolar
命令 启动cpolar - 在浏览器使用 虚拟机ip:9200 访问cpolar
- 注册用户
- 返回登录
- 点击左侧隧道管理,创建新隧道
- 点击在线隧道列表,查看新建隧道
由于后续安装的elasticsearch端口也为9200,故在此处贴上修改cpolar端口
查看9200端口信息
停止正在运行的cpolar
systemctl stop cpolar
使用
find / -name cpolar.yml 2>/dev/null
查看yml文件查看官网教程
执行
vi /usr/local/etc/cpolar/cpolar.yml
添加配置
client_dashboard_addr: 127.0.0.1:9300
,注意,官网修改只能虚拟机内部访问,外部无法访问如果需要外部访问的话,此处需要改为 虚拟机ip:端口号
启动服务
sudo systemctl start cpolar
未停止服务的话,使用重启服务
sudo systemctl restart cpolar
测试是否修改成功
如果在线隧道列表无隧道,前往隧道管理启动相应隧道
SpringBoot集成使用
- 在pom中引入jar包
#低版本的okhttp会报错提示 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.5.7</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.10.0</version> </dependency>
- 上传代码测试
@Test void uploadtest(){ try{ String endPoint = "8.tcp.cpolar.top"; int port = 13981; String accessKey = "YsBvivSZUGsRLfqL2JXL"; String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa"; MinioClient minioClient = MinioClient.builder() .endpoint(endPoint,port,false) .credentials(accessKey,secretKey) .build(); // 定义桶名和对象名称 String bucketName = "gulimall"; String objectName = "test.jpg"; String filePath = "E:\\uploadFile\\gulimall/p23.png"; // 本地文件路径 minioClient.uploadObject( UploadObjectArgs.builder() .bucket(bucketName) .object(objectName) .filename(filePath) .build()); System.out.println("上传测试成功........"); }catch (Exception e){ System.out.println("Error" + e); } }
- 提交报错(提示 请求时间和服务器时间之间的差异太大)
Errorerror occurred ErrorResponse(code = RequestTimeTooSkewed, message = The difference between the request time and the server's time is too large., bucketName = null, objectName = null, resource = /gulimall, requestId = 17EC67767F4197ED, hostId = dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8)
- 在虚拟机使用chronyd同步时间
- 使用
yum install chronyd
安装 - 启用chronyd 服务
systemctl enable chronyd
- 启动 chronyd 服务
systemctl start chronyd
- 同步时间
chronyc makestep
- 使用
date
检查 (我再次检查,发现时间依旧不对,最后检查发现,时区未设置为上海) - 设置时区为上海
timedatectl set-timezone Asia/Shanghai
- 再次使用
date
检查,时间调整成功 - 再次测试提交,测试成功
- 下载代码测试
@Test void downLoad(){ try { String endPoint = "8.tcp.cpolar.top"; int port = 13981; String accessKey = "YsBvivSZUGsRLfqL2JXL"; String secretKey = "yuLLwPoxFjUUvn45bQ3rwmH49Pf8wGFGkZTpNGXa"; // 创建 MinIO 客户端 MinioClient minioClient = MinioClient.builder() .endpoint(endPoint,port,false) .credentials(accessKey, secretKey) .build(); String bucketName = "gulimall"; String objectName = "test.jap"; String filePath = "E:\\downloadFile\\gulimall/p23.png"; // 本地文件路径 // 下载文件 minioClient.downloadObject( DownloadObjectArgs.builder() .bucket(bucketName) .object(objectName) .filename(filePath) .build() ); System.out.println("文件下载成功: " + filePath); } catch (Exception e) { System.out.println("Error occurred: " + e); } }
通过地址访问上传内容
- 点击自己的bucket
- 设置自己的bucket为公开
- 点击Access Policy后面的小铅笔或者下面的public
- 从private改为publlic
- 查看上传的文件地址
- 浏览器输入 虚拟机ip:9000/ 上传的文件地址
总结
到此这篇关于使用Docker搭建minio的文章就介绍到这了,更多相关Docker搭建minio内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!