Docker:docker部署Minio服务并创建访问密钥
前言
Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等;最重要的是免费!!!
镜像下载
查询镜像
docker search minio

这里我选的是 bitnami/minio:2024.7.4 版本的镜像。
下载镜像
docker pull bitnami/minio:2024.7.4

构建容器
创建挂载目录
创建存放配置和存储数据的目录,用于将容器内的数据挂载到宿主机
## 创建存放minio配置文件的目录
mkdir -p /home/minio/config
## 创建存放minio存储数据的目录
mkdir -p /home/minio/data
映射目录赋权
# 一定要把文件夹都先创建好,不然容器启动后容器创建的用户组和权限都会是root,而不是1001,导致启动失败
# 赋权
chown -R 1001:1001 /home/minio
普通命令构建
docker run \
-p 9000:9000 \
-p 9010:9001 \
--net=host \
--name minio \
-td --restart always \
--privileged=true \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v /etc/localtime:/etc/localtime:ro \
-v /home/minio/data:/bitnami/minio/data \
-v /home/minio/config:/root/.minio \
bitnami/minio:2024.7.4
| 命令 | 说明 |
|---|---|
| -p 9000:9000 | 这是minio的API接口端口映射 |
| -p 9010:9001 | 这是minio的客户端浏览器页面访问端口映射,由于9001与mqtt服务的端口冲突,所以这里使用9010做的映射 |
| --net=host | 这是网络设置,表示容器将使用主机的网络栈 |
| --name minio | 自定义容器名称 |
| -d --restart=always | -d 使容器在后台运行,–restart=always 表示容器总是会在退出后自动重启 |
| -e "MINIO_ROOT_USER=minio" | 设置用户名 |
| -e "MINIO_ROOT_PASSWORD=minioadmin" | 设置密码,密码长度最少8位,否则会报错!!!!! |
| -v /etc/localtime:/etc/localtime:ro | 同步宿主机的时间 |
| -v /home/minio/data:/bitnami/minio/data | 映射minio存储的数据文件到宿主机目录 |
| -v /home/minio/config:/root/.minio | 映射minio的配置文件到宿主机目录 |
Docker-Compose命令构建
version: "3.8"
networks:
my_net:
name: my_net
ipam:
config:
- subnet: 172.19.8.0/24
services:
minio:
container_name: my-minio
image: bitnami/minio:2024.7.4
restart: always
privileged: true
environment:
MINIO_ROOT_USER: minio
MINIO_ROOT_PASSWORD: minioadmin
ports:
- 9000:9000
- 9010:9001
networks:
my_net:
ipv4_address: 172.19.8.106
volumes:
- /etc/localtime:/etc/localtime:ro
- /home/minio/data:/bitnami/minio/data
## # 防止Minio随机占用端口,指定端口9001为页面显示,9000为API接口,以此启动Minio
## command: ["server", "/bitnami/minio/data", "--console-address", ":9001", "-address", ":9000"]
访问页面
访问:http://127.0.0.1:9010 用户名:minio 密码:minioadmin

创建用户
创建用户


创建用户组
用户组就是用于管理用户的群组


创建存储桶
存储桶可以理解为就是存储我们文件的空间


点击新建的存储桶,修改Access Policy的访问策略。

创建Access Keys
创建minio的API接口访问密钥


记得保存好生成的密钥信息,编写代码访问minio的API接口使用的就是这个密钥对

指定桶创建权限策略赋予指定用户可操作
创建桶


创建Minio登录用户的策略


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"admin:CreateServiceAccount", // 这里的配置是禁用Access Keys创建删除的功能,然后把这个注释清掉,不然会报错格式错误
"admin:RemoveServiceAccount",
"admin:UpdateServiceAccount"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Resource": "arn:aws:s3:::bioinfo-backet" // 这里改成自己的存储桶名称,然后把这个注释清掉,不然会报错格式错误
},
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::bioinfo-backet/*" // 这里改成自己的存储桶名称,然后把这个注释清掉,不然会报错格式错误
}
]
}
创建API调用的策略

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"admin:*"
]
},
{
"Effect": "Allow",
"Action": [
"kms:*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::bioinfo-backet" // 这里改成自己的存储桶名称,然后把这个注释清掉,不然会报错格式错误
]
},
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::bioinfo-backet/*" // 这里改成自己的存储桶名称,然后把这个注释清掉,不然会报错格式错误
]
}
]
}
创建用户


至此,部署及操作完成!
-----------------------------------
作者:怒吼的萝卜
链接:http://www.cnblogs.com/nhdlb/
-----------------------------------


浙公网安备 33010602011771号