Skip to content

MinIO + Docker 搭建属于自己的 OSS 存储服务

约 1144 字大约 4 分钟

OSSDockerLinux

2025-03-03

MinIO 是一个高性能的轻量级对象存储服务器。它具有分布式,高可用性和水平扩展的特点,它非常适合用于大规模数据存储和分析。其优点包括低延迟、高吞吐量、易于部署和管理。

1. 使用 Docker 启动 MinIO

提示

如果是阿里云服务器,还需:

sudo apt install snapd

登录服务器,安装 Docker :

sudo snap install docker

创建 MinIO 的目录:

mkdir minio

进入 MinIO 目录:

cd minio

新建文件并打开:

vim docker-compose.yaml

docker-compose.yaml 是 Docker Compose 使用的配置文件,通常用于定义和管理多容器 Docker 应用程序。

在 docker-compose.yaml 中粘贴配置文件:

services:
  minio:
    container_name: minio
    image: quay.io/minio/minio
    command: server /data --console-address ":9001"
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - ./data:/data
    environment:
      - MINIO_ROOT_USER=zzy
      - MINIO_ROOT_PASSWORD=***

MINIO_ROOT_USER= 后填入服务器当前用户名

MINIO_ROOT_PASSWORD= 后填入服务器当前用户名的密码

其中 9000 端口用于访问,9001 端口用于控制台

保存退出

提示

2025年3月24更新: 如果执行 sudo docker compose up 很慢可以将 quay.io/minio/minio 更换为国内镜像,镜像来源:

swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/minio/minio:latest

启动!

sudo docker compose up
zzy@ajohn-top:~/minio$ sudo docker compose up
[+] Running 11/11
 ✔ minio 10 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                          51.8s 
   ✔ f85b91ff2bfd Pull complete                                                                  7.3s 
   ✔ e3a2c2426f91 Pull complete                                                                  3.7s 
   ✔ 2c2d0fc1bc01 Pull complete                                                                  5.2s 
   ✔ dceacb66a9de Pull complete                                                                  5.8s 
   ✔ 72729072f786 Pull complete                                                                 45.4s 
   ✔ ad57128305dd Pull complete                                                                 26.0s 
   ✔ f634493814a0 Pull complete                                                                 13.5s 
   ✔ bca14f032577 Pull complete                                                                 20.6s 
   ✔ 2390426de7ed Pull complete                                                                 22.3s 
   ✔ d8d02ca4ca98 Pull complete                                                                 24.1s 
[+] Running 2/2
 ✔ Network minio_default  Created                                                                0.3s 
 ✔ Container minio        Created                                                                0.1s 
Attaching to minio
minio  | INFO: Formatting 1st pool, 1 set(s), 1 drives per set.
minio  | INFO: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
minio  | MinIO Object Storage Server
minio  | Copyright: 2015-2025 MinIO, Inc.
minio  | License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
minio  | Version: RELEASE.2025-02-28T09-55-16Z (go1.23.6 linux/amd64)
minio  | 
minio  | 
minio  | API: http://172.18.0.2:9000  http://127.0.0.1:9000 
minio  | WebUI: http://172.18.0.2:9001 http://127.0.0.1:9001  
minio  | 
minio  | Docs: https://docs.min.io
minio  |

sudo docker compose up 命令用于启动 docker-compose.yaml 中定义的所有容器,并自动管理它们的依赖关系。

它会根据 docker-compose.yaml 的配置创建、启动容器,并在需要时构建镜像、挂载卷、映射端口等。

提示

sudo docker compose up -d

-d(detach):以后台模式运行,不会阻塞终端。

zzy@ajohn-top:~/minio$ sudo docker compose up -d
[+] Running 1/1
 ✔ Container minio  Started                                                                                                                                                     0.0s 
zzy@ajohn-top:~/minio$

2. 域名解析

前往域名商,添加两条 A 记录:

主机记录:oss
记录类型:A
记录值:你的服务器ip
主机记录:oss-m
记录类型:A
记录值:你的服务器ip

3. 添加反向代理

前往宝塔面板,添加反向代理。

在左侧点击网站,点击反向代理,点击添加反代

域名:oss.ajohn.top
代理地址:http://127.0.0.1:9000

域名:oss-m.ajohn.top
代理地址:http://127.0.0.1:9001

添加完成后,可以顺带部署一下 SSL 证书,使用 上次的证书夹 即可,非常快捷。

部署完证书记得打开强制 https 。

4. MinIO

打开你的 MinIO 管理页面:https://oss-m.ajohn.top/,账号和密码是之前 Docker 配置的。

点击左侧 BUckets ,点击 Create Buckets ,创建一个桶。

MinIO 使用 bucket 来组织对象。bucket 类似于文件系统中的文件夹或目录,其中每个 bucket 可以容纳任意数量的对象。

  • Versioning 允许在同一密钥下保存同一对象的多个版本。

  • Object Locking 可防止删除对象。需要支持保留和法律封存。只能在创建bucket时启用。

  • Quota 限制了存储桶中的数据量。

  • Retention 规定了在一段时间内防止对象删除的规则。必须启用版本控制才能设置存储桶保留策略。

5. 使用 Picgo 上传

阿囧阿囧,手动上传好麻烦,有没有简单一点的方法呢?有的兄弟有的。

尽管 Picgo 没有 MinIO 图床,但我们可以通过 picgo-plugin-minio 这个插件来实现。

6. 使用 Onedrive 备份

数据无价,为了以防万一,我们可以使用 Onedrive 来备份我们的图片。

在宝塔面板的软件商店中搜索 OneDirve 并下载,接下来可查阅宝塔教程:OneDirve 备份插件使用向导

创建计划任务时,如下图,任务类型选择 备份目录 ,备份目录点击右侧小文件夹,定位到你要备份的目录,备份到选择 微软OneDirve 。

参考资料: