docker minio部署和应用
docker minio部署和应用
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
前提条件
单点模式
- 此处自定义Access和Secret秘钥,默认值为minioadmin/minioadmin。
# docker pull minio/minio
# docker run -di -p 9000:9000 --name minio1 \
--restart=always \
-e "MINIO_ACCESS_KEY=minioadmin123" \
-e "MINIO_SECRET_KEY=minioadmin123" \
-v /mnt/data:/data \
-v /mnt/config:/root/.minio \
-v /etc/localtime:/etc/localtime \
minio/minio:RELEASE.2020-05-08T02-40-49Z server /data
# firewall-cmd --zone=public --add-port=9000/tcp --permanent //开放端口
# firewall-cmd --reload
Docker Compose单机多容器
下载docker-compose.yml并根据本地情节编辑后,上传至服务器当前工作目录,Docker Compose会pull MinIO Docker Image,所以你不需要手动去下载MinIO binary。然后运行下面的命令:
# docker-compose pull
# docker-compose up
Swarm mode多机多容器
Kubernetes多机多容器
未完待续...
文件上传并设置bucket策略
- 登录Minio Browser页面后,如下图:
- 点击页面加号ICON,点击Create bucket ICON
- 点击上传文件ICON
- 设置文件策略,在左侧bucket上编辑Edit Policy,设置访问前缀为或者.*,选择策略为Read Only/Write Only/Read and Write。
mc 客户端
常用命令
命令 | 解释 |
---|---|
ks | 列出文件和文件夹 |
mb | 创建一个存储桶或一个文件夹 |
cat | 显示文件和对象内容 |
pipe | 将一个STDIN重定向到一个对象或者文件或者STDOUT |
share | 生成用于共享的URL |
cp | 拷贝文件和对象 |
mirror | 给存储桶和文件夹做镜像 |
find | 基于参数查找文件 |
diff | 对两个文件夹或者存储桶比较差异 |
rm | 删除文件和对象 |
events | 管理对象通知 |
watch | 监听文件和对象的事件 |
policy | 管理访问策略 |
session | 为cp命令管理保存的会话 |
config | 管理mc配置文件 |
update | 检查软件更新 |
version | 输出版本信息 |
配置mc命令客户端并设置bucket策略
# docker pull minio/mc //拉取mc客户端镜像
# docker run -it --entrypoint=/bin/sh minio/mc // 运行
# mc config host add minio2 http://宿主机IP:9000 minioadmin minioadmin --api s3v4
# mc policy set public minio2/testabc //设置访问权限
# docker attach 容器ID //从新进入容器
- 权限4种:none, download, upload, public
- mc命令方式和Minio浏览器上设置策略二选一
运维问题
1、The difference between the request time and the server's time is too large?
原因:linux服务器时区的问题
解决方案:调整系统时间和硬件时间
# date //查看系统时间
# hwclock //查看硬件时间
# yum -y install ntp ntpdate //安装ntpdate时间同步工具
# ntpdate cn.pool.ntp.org //设置系统时间与网络时间同步
# hwclock --systohc //将系统时间写入硬件时间