环境:
OS:Ubuntu24

1.创建目录并设置权限:

## 在 Docker 容器外部(即 Ubuntu 主机上)手动创建 /var/data/minio/data 目录。
sudo mkdir -p /var/data/minio/data
# 推荐方式:更改所有者(MinIO容器默认用户UID为1001)
# sudo chown -R 1001:1001 /var/data/minio/data
# 或简易方式:放宽权限(用于快速测试)
sudo chmod -R 777 /var/data/minio/data

原因分析:
A.) 权限问题(最关键的原因):
MinIO 容器默认以 minio-user 用户(UID 1001, GID 1001)运行,而不是 root。
如果你不预先创建目录,Docker 会在启动时自动创建 ./minio/data,但这个目录的所有者将是 root。
当 MinIO 进程(用户 minio-user)尝试向这个由 root 拥有的目录写入数据时,会权限不足(Permission Denied),导致容器启动失败或无法正常运行。

B.)可维护性和明确性:
手动创建目录让你能清楚地知道数据的确切存储位置。
你可以有意识地设置该目录的权限(例如 chmod 775),甚至更改其所有者,确保一切都在你的掌控之中。

2.创建yml文件
vim docker-compose.yml
``

  minio:
    # image: registry.cn-shenzhen.aliyuncs.com/hxlk8s/minio:RELEASE.2023-03-20T20-16-18Z
    image: minio/minio:latest  ### 最新版本镜像, 也不支持中文
    container_name: minio
    privileged: true
    restart: always
    ports:
      # API接口访问端口   ##  MinIO 容器内部的默认 API 端口是 9000
      - 9090:9090
      # Web管理访问端口
      - 9001:9001
    environment:
      # Web管理用户名
      MINIO_ROOT_USER: admin
      #Web管理密码
      MINIO_ROOT_PASSWORD: admin123
      # 设置默认语言为中文
      MINIO_BROWSER_DEFAULT_LOCALE: "zh_CN" # 设置默认语言为中文
    volumes:
      # 文件目录映射
      ## 语法:主机目录:容器内目录
      ## 用途:这是最核心的数据持久化映射。
      ## 详细解释:
      ### ./minio/data:这是宿主机(你的 Ubuntu 系统)上的一个目录路径(如上所述)。
      ### /data:这是 MinIO 容器内部的目录路径,MinIO 服务会默认将它所有的数据(用户创建的文件、桶、配置等)存储在这个位置。
      ### 作用:将容器内的 /data 目录“挂载”到主机上的 ./minio/data 目录。这样,MinIO 写入容器内 /data 的数据,实际上被永久地保存到了主机磁盘上。
      ###       即使你删除并重新创建了 MinIO 容器,只要新的容器继续使用这个映射,之前的所有数据都会完好无损。 如果没有这个映射,数据会随着容器的删除而丢失。
      -  /var/data/minio/data:/minio/data

      ## 用途:同步容器与宿主机的系统时间(时区)。
      ### 详细解释:
      ### /etc/localtime:在 Linux 系统中,这个文件定义了系统的时区设置(例如 Asia/Shanghai)。
      ### 通过将这个文件以只读 (ro) 的方式映射到容器内同样的路径,容器内的系统时间就会使用和宿主机完全相同的时区设置。
      ### 作用:确保 MinIO 记录的文件时间戳、日志时间等与宿主机及其他系统保持一致,避免出现时间错乱的问题。
      - /etc/localtime:/etc/localtime:ro
      ## 用途:同样是用于同步时间设置,作为上一行的补充。
      - /etc/timezone:/etc/timezone:ro
    # 启动minio容器服务执行命令
    # 必须指定固定端口:Web管理后台是动态端口  /data参数是容器内部数据目录
    command: server  /minio/data --console-address ":9001" --address ":9090"  # 增加 -- address ":9090"

    # 新增:网络配置,集成到现有网络中
    networks:
      network:
        ipv4_address: 177.7.0.19 # 请分配一个未被使用的IP,例如177.7.0.19


  1. 启动 MinIO 服务
docker-compose up -d
  1. 验证:

使用 docker-compose logs minio 查看日志,如果没有权限错误,并且提示 Status: 1 Online, 0 Offline 等正常信息,则说明成功。
5. 在服务器上的防火墙放行端口:
云服务商(腾讯云、阿里云、AWS等)都有安全组功能,它相当于一个云防火墙,默认只开放少数常用端口(如22, 80, 443),其他所有端口(包括9000, 9001)都是关闭的。
如果没有放行端口,是访问不了的,如下图所示:
在这里插入图片描述

操作:登录到您的云服务器管理控制台,找到“安全组”配置。

修改:为您这台服务器的安全组添加一条入站规则(Inbound Rule)。

类型:自定义 TCP

端口范围:9090;9001 (或者分开两条规则:9090 和 9001)

源:0.0.0.0/0 (允许所有IP访问) 或 您的本地IP地址(更安全)

策略:允许

保存后通常立即生效。

在这里插入图片描述
在这里插入图片描述

  1. 访问
    MinIO 管理控制台:http://<您的服务器IP>:9001
    MinIO API 服务: http://<您的服务器IP>:9090
    在这里插入图片描述

使用 admin/admin123 登录,如果能成功进入管理界面并创建存储桶,说明一切正常。
在这里插入图片描述
以下为最新版本的MinIO界面:
在这里插入图片描述
注意事项

不要指望可以配置支持中文界面的 MinIO 服务成功。反正我配置了半天,还是配置失败 !

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐