【Docker】Minio 容器化部署配置详情

qingtcloud-oss标准软件基于Bitnami minio 构建。当前版本为2024.2.26

连接容器

使用Docker 容器网络,应用程序容器可以轻松访问容器内运行的 MinIO® 服务器。

使用命令行

在此示例中,我们将创建一个MinIO® 客户端容器,该容器将连接到与客户端在同一 Docker 网络上运行的服务器容器。

第 1 步:创建网络
docker network create app-tier --driver bridge
步骤 2:启动 MinIO® 服务器容器

使用命令–network app-tier的参数docker run将 MinIO® 容器连接到网络app-tier。

docker run -d --name minio-server \
    --env MINIO_ROOT_USER="minio-root-user" \
    --env MINIO_ROOT_PASSWORD="minio-root-password" \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest
步骤 3:启动您的 MinIO® 客户端容器

最后,我们创建一个新的容器实例来启动 MinIO® 客户端并连接到上一步中创建的服务器。在此示例中,我们在 MinIO® 存储服务器中创建一个新bucket:

docker run -it --rm --name minio-client \
    --env MINIO_SERVER_HOST="minio-server" \
    --env MINIO_SERVER_ACCESS_KEY="minio-access-key" \
    --env MINIO_SERVER_SECRET_KEY="minio-secret-key" \
    --network app-tier \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/minio-client \
    mb minio/my-bucket

使用 Docker Compose 文件

如果未指定,Docker Compose 会自动设置一个新网络并将所有已部署的服务附加到该网络。但是,我们将显式定义一个bridge名为app-tier的新网络。在此示例中,我们假设您希望从您自己的自定义应用程序映像连接到 MinIO® 服务器,该image在以下代码片段中通过服务名称myapp进行标识。

version: '2'

networks:
  app-tier:
    driver: bridge

services:
  minio:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    ports:
      - '9000:9000'
      - '9001:9001'
    environment:
      - MINIO_ROOT_USER=minio-root-user
      - MINIO_ROOT_PASSWORD=minio-root-password
    networks:
      - app-tier
  myapp:
    image: 'YOUR_APPLICATION_IMAGE'
    networks:
      - app-tier
    environment:
      - MINIO_SERVER_ACCESS_KEY=minio-access-key
      - MINIO_SERVER_SECRET_KEY=minio-secret-key

重要

替换YOUR_APPLICATION_IMAGE占位符
在您的应用程序容器中,使用主机名minio连接到 MinIO® 服务器。使用环境变量MINIO_SERVER_ACCESS_KEY并MINIO_SERVER_SECRET_KEY配置凭据以访问 MinIO® 服务器。
确保环境变量MINIO_ROOT_PASSWORD满足MINIO_SERVER_SECRET_KEYMinIO® 强制执行的 8 个字符最小长度要求。

启动容器:

docker-compose up -d

配置

MiNIO 可以通过环境变量进行配置,详细信息请参阅MinIO® 文档。

环境变量

定制的环境变量
NameDescriptionDefault Value
MINIO_DATA_DIRMinIO 数据目录。/bitnami/minio/data
MINIO_DATA_DIRMinIO 数据目录。/bitnami/minio/data
MINIO_API_PORT_NUMBERMinIO API 端口号9000
MINIO_API_PORT_NUMBERMinIO API 端口号9080
MINIO_CONSOLE_PORT_NUMBERMinIO API 端口号9001
MINIO_SCHEMEMinIO web scheme.http
MINIO_SKIP_CLIENT跳过 MinIO 客户端配置。no
MINIO_DISTRIBUTED_MODE_ENABLED启用 MinIO 分布式模式。no
MINIO_STARTUP_TIMEOUTMinIO 启动超时。10
MINIO_SERVER_URLMinIO 服务器外部 URL。$MINIO_SCHEME://localhost:$MINIO_API_PORT_NUMBER
MINIO_APACHE_CONSOLE_HTTP_PORT_NUMBERMinIO 控制台 UI HTTP 端口,通过 Apache 公开,具有基本身份验证。80
MINIO_APACHE_CONSOLE_HTTPS_PORT_NUMBERMinIO 控制台 UI HTTPS 端口,通过 Apache 公开,具有基本身份验证。443
MINIO_APACHE_API_HTTP_PORT_NUMBERMinIO API HTTP 端口,通过 Apache 公开,具有基本身份验证。9000
MINIO_APACHE_API_HTTPS_PORT_NUMBERMinIO API HTTPS 端口,通过 Apache 公开,具有基本身份验证。9443
MINIO_FORCE_NEW_KEYS强制重新创建 MinIO 密钥。no
MINIO_ROOT_USERMinIO root 用户名。minio
MINIO_ROOT_PASSWORDMinIO root 用户的密码。miniosecret
只读环境变量
NameDescriptionValue
MINIO_BASE_DIRMinIO 安装目录。${BITNAMI_ROOT_DIR}/minio
MINIO_BIN_DIR二进制文件的 MinIO 目录。${MINIO_BASE_DIR}/bin
MINIO_CERTS_DIRTLS 证书的 MinIO 目录。/certs
MINIO_LOGS_DIR日志文件的 MinIO 目录。${MINIO_BASE_DIR}/log
MINIO_TMP_DIR日志文件的 MinIO 目录。${MINIO_BASE_DIR}/tmp
MINIO_SECRETS_DIR凭证的 MinIO 目录。${MINIO_BASE_DIR}/secrets
MINIO_LOG_FILEMinIO 日志文件。${MINIO_LOGS_DIR}/minio.log
MINIO_PID_FILEMinIO PID文件。${MINIO_TMP_DIR}/minio.pid
MINIO_DAEMON_USERMinIO 系统用户。minio
MINIO_DAEMON_GROUPMinIO 系统组。minio

此镜像中还附带了MinIO® 客户端 ( mc),可用于执行MinIO® 客户端文档中所述的管理任务。下面的例子中,客户端用于获取服务器信息:

docker run --name minio -d registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest
docker exec minio mc admin info local

或使用 Docker Compose 前提是你已经下载了完整的docker-compose.xml:

docker-compose up -d
docker-compose exec minio mc admin info local

创建默认存储桶

您可以在容器初始化期间通过设置环境变量在 MinIO® 服务器中创建一系列存储桶,MINIO_DEFAULT_BUCKETS如下所示(策略是可选的):

docker run --name minio \
    --publish 9000:9000 \
    --publish 9001:9001 \
    --env MINIO_DEFAULT_BUCKETS='my-first-bucket:policy,my-second-bucket' \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest

或者通过修改docker-compose.yml配置信息:

services:
  minio:
  ...
    environment:
      - MINIO_DEFAULT_BUCKETS=my-first-bucket:policy,my-second-bucket
  ...

使用 TLS 保护对 MinIO® 服务器的访问

您可以使用 TLS 保护对 MinIO® 服务器的访问,如MinIO® 文档中所述。

该映像期望将变量MINIO_SCHEME设置为https并将证书安装在该/certs目录中。您可以将密钥和证书文件放在本地目录中并将其挂载到容器中,如下所示:

docker run --name minio \
    --publish 9000:9000 \
    --publish 9001:9001 \
    --volume /path/to/certs:/certs \
    --env MINIO_SCHEME=https
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest

或者通过修改docker-compose.yml文件:

services:
  minio:
  ...
    environment:
    ...
      - MINIO_SCHEME=https
    ...
    volumes:
      - /path/to/certs:/certs
  ...

在分布式模式下设置 MinIO®

您可以在分布式模式下配置 MinIO® 以设置高可用性存储系统。为此,必须在每个节点上设置以下环境变量:

  • MINIO_DISTRIBUTED_MODE_ENABLED:将其设置为“yes”以启用分布式模式。
  • MINIO_DISTRIBUTED_NODES:MinIO® 节点主机列表。可用的分隔符为“ ”、“,”和“;”。
  • MINIO_ROOT_USER:MinIO® 服务器根用户。必须在每个节点上通用。
  • MINIO_ROOT_PASSWORD:MinIO® 服务器根密码。必须在每个节点上通用。
    您可以使用下面的 Docker Compose 创建 4 节点分布式 MinIO® 设置:
version: '2'

services:
  minio1:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    environment:
      - MINIO_ROOT_USER=minio-root-user
      - MINIO_ROOT_PASSWORD=minio-root-password
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
      - MINIO_SKIP_CLIENT=yes
  minio2:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    environment:
      - MINIO_ROOT_USER=minio-root-user
      - MINIO_ROOT_PASSWORD=minio-root-password
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
      - MINIO_SKIP_CLIENT=yes
  minio3:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    environment:
      - MINIO_ROOT_USER=minio-root-user
      - MINIO_ROOT_PASSWORD=minio-root-password
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
      - MINIO_SKIP_CLIENT=yes
  minio4:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    environment:
      - MINIO_ROOT_USER=minio-root-user
      - MINIO_ROOT_PASSWORD=minio-root-password
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
      - MINIO_SKIP_CLIENT=yes

MinIO® 还支持省略号语法 ( {1…n}) 来列出 MinIO® 节点主机,其中n是节点数。{1…m}此语法对于在每个 MinIO® 节点上使用多个驱动器 ( ) 也有效,其中n是每个节点的驱动器数量。您可以使用下面的 Docker Compose 创建 2 节点分布式 MinIO® 设置,每个节点有 2 个驱动器:

version: '2'
services:
  minio-0:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    volumes:
      - 'minio_0_data_0:/bitnami/minio/data-0'
      - 'minio_0_data_1:/bitnami/minio/data-1'
    environment:
      - MINIO_ROOT_USER=minio
      - MINIO_ROOT_PASSWORD=miniosecret
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio-{0...1}/bitnami/minio/data-{0...1}
  minio-1:
    image: 'registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest'
    volumes:
      - 'minio_1_data_0:/bitnami/minio/data-0'
      - 'minio_1_data_1:/bitnami/minio/data-1'
    environment:
      - MINIO_ROOT_USER=minio
      - MINIO_ROOT_PASSWORD=miniosecret
      - MINIO_DISTRIBUTED_MODE_ENABLED=yes
      - MINIO_DISTRIBUTED_NODES=minio-{0...1}/bitnami/minio/data-{0...1}
volumes:
  minio_0_data_0:
    driver: local
  minio_0_data_1:
    driver: local
  minio_1_data_0:
    driver: local
  minio_1_data_1:
    driver: local

在MinIO® 文档中查找有关分布式模式的更多信息。

在容器重新启动时重新配置密钥

MINIO_ROOT_USERMinIO® 在第一次初始化期间分别根据和环境变量配置访问密钥和密钥MINIO_ROOT_PASSWORD。

使用持久性时,MinIO® 将默认重用第一次初始化期间配置的数据,忽略这些环境变量上设置的任何值。MINIO_FORCE_NEW_KEYS您可以通过将环境变量设置为:来强制 MinIO® 根据环境变量重新配置密钥yes:

docker run --name minio \
    --publish 9000:9000 \
    --publish 9001:9001 \
    --env MINIO_FORCE_NEW_KEYS="yes" \
    --env MINIO_ROOT_USER="new-minio-root-user" \
    --env MINIO_ROOT_PASSWORD="new-minio-root-password" \
    --volume /path/to/minio-persistence:/bitnami/minio/data \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest

日志

docker logs minio

或使用 Docker Compose:

docker-compose logs minio

HTTP 日志跟踪

要启用 HTTP 日志跟踪,您可以设置环境变量MINIO_HTTP_TRACE以将日志重定向到特定文件,如MinIO® 文档中详述。

当将此环境变量设置为 时/opt/bitnami/minio/log/minio.log,日志将发送到stdout.

docker run --name minio \
    --publish 9000:9000 \
    --publish 9001:9001 \
    --env MINIO_HTTP_TRACE=/opt/bitnami/minio/log/minio.log \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/qingcloud-oss:latest

或者通过修改docker-compose.yml文件:

services:
  minio:
  ...
    environment:
      - MINIO_HTTP_TRACE=/opt/bitnami/minio/log/minio.log
  ...

你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取

开源地址: https://gitee.com/qingplus/qingcloud-platform

Qinghub Studio 在线体验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值