跳到主要内容

Docker 构建 MinIO

Docker 构建 MinIO(docker-compose 部署版本)​

MinIO 是一个高性能的分布式对象存储系统,软件定义架构,可在行业标准硬件上运行,在 Apache 2.0 许可下完全开源。读写速度可达 183GB/s 和 171GB/s(标准硬件),可作为 Spark、Presto、TensorFlow、H2O.ai 等工作负载的主要存储层,也可用于替代 Hadoop HDFS。

文档地址:https://docs.min.io/cn/

本文按 docker-compose 方式部署 MinIO 单节点,镜像、端口、账号、目录等全部集中在 .env 中管理。

1. 宿主目录​

宿主目录用途容器内用户
/data/runtime/docker/minio/data对象存储数据root(compose 已设 user: root)

若将 .env 中 MINIO_DATA_DIR 留空,则回退使用 Docker 命名卷 minio-data,无需创建宿主目录。

2. 创建宿主目录并设置权限​

bind mount 首次使用需先建目录(容器以 root 运行,无需授权):

mkdir -p /data/runtime/docker/minio/data

3. 编制 .env​

在本目录创建 .env 文件(内容如下,按需修改):

# ---------- MinIO 环境变量(集中管理) ----------
MINIO_IMAGE=minio/minio:RELEASE.2025-04-22T22-12-26Z
MINIO_CONTAINER_NAME=minio
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_API_PORT=9000
MINIO_CONSOLE_PORT=9001
TZ=Asia/Shanghai
# 宿主机数据目录(统一约定 /data/runtime/docker/<服务>);留空则回退到命名卷 minio-data
MINIO_DATA_DIR=/data/runtime/docker/minio/data

4. .env 变量说明​

变量说明示例
MINIO_IMAGE镜像版本minio/minio:RELEASE.2025-04-22T22-12-26Z
MINIO_CONTAINER_NAME容器名minio
MINIO_API_PORTAPI 端口9000
MINIO_CONSOLE_PORT控制台端口9001
MINIO_ROOT_USER / MINIO_ROOT_PASSWORD管理员账号密码minioadmin / minioadmin
MINIO_DATA_DIR数据目录,留空回退命名卷/data/runtime/docker/minio/data
TZ时区Asia/Shanghai

5. docker-compose.yml​

在本目录创建 docker-compose.yml:

services:
minio:
image: ${MINIO_IMAGE}
container_name: ${MINIO_CONTAINER_NAME}
restart: unless-stopped
user: root
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
TZ: ${TZ}
ports:
- "${MINIO_API_PORT}:9000"
- "${MINIO_CONSOLE_PORT}:9001"
command: server /data --console-address ":9001"
volumes:
- ${MINIO_DATA_DIR:-minio-data}:/data
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
interval: 10s
timeout: 5s
retries: 10

volumes:
minio-data:

6. 启动​

cd Docker构建MinIO
docker compose up -d
docker compose ps
docker compose logs -f minio
docker compose down # 停止并移除容器(命名卷数据保留)
docker compose down -v # 连数据卷一起清空

7. 访问​

  • 控制台:http://<服务器IP>:9001,输入 .env 中的账号密码登录
  • S3 API:http://<服务器IP>:9000