使用容器技术快速入门MinIO
使用容器技术快速入门MinIO
使用容器技术(docker或者podman)快速部署一个单节点单磁盘 MinIO 服务器,用于对MinIO对象存储及其兼容 S3 的 API 层进行早期的开发和评估。
1. 准备工作
-
机器已经安装了 Podman 或者 Docker 。
-
对用于持久卷的文件夹或驱动器具有读取、写入和删除权限。
2. 容器部署操作步骤
选择一个容器类型以查看创建容器的指南。 提供了适用于 GNU/Linux 和 MacOS,或适用于 Windows 的指南。
2.1 podman部署
使用podman部署,下面步骤适用于rootfull和rootless的容器。
linux/macos:
mkdir -p ~/minio/data
podman run \
-p 9000:9000 \
-p 9001:9001 \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
quay.io/minio/minio server /data --console-address ":9001"
windows:
podman run \
-p 9000:9000 \
-p 9001:9001 \
-v D:\minio\data:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
quay.io/minio/minio server /data --console-address ":9001"
说明:
-
podman run 启动容器. 该进程附加到终端会话,并在退出终端时结束。
-
-p 为容器绑定一个本地的端口.
-
-v 将文件路径设置为容器使用的持久卷位置。 当MinIO将数据写入 /data 时,该数据会镜像到本地路径 ~/minio/data , 使其能够在容器重新启动时保持持久化。 您可以设置任何具有读取、写入和删除权限的文件路径来使用。
-
-e 分别为用户名和密码设置环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。如果变量未设置,minio 将默认使用
minioadmin
作为访问密钥,以及minioadmin
作为秘密密钥。
2.2 docker部署
使用docker部署minio,包括部署rootfull或者rootless类型的容器。
rootfull方式部署
- linux或macos
mkdir -p ~/minio/data
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
quay.io/minio/minio server /data --console-address ":9001"
- windows
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio1 \
-v D:\minio\data:/data \
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
quay.io/minio/minio server /data --console-address ":9001"
上面的示例以以下方式工作:
-
docker run 启动运行容器。
-
-p 为容器绑定一个本地的端口.
-
-name 为容器创建一个本地的名字。
-
-v 将文件路径设置为容器使用的持久卷位置。 当MinIO将数据写入 /data 时,该数据会镜像到本地路径 ~/minio/data , 使其能够在容器重新启动时保持持久化。 您可以设置任何具有读取、写入和删除权限的文件路径来使用。
-
-e 分别为用户名和密码设置环境变量 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD。
rootless方式部署
- linux/macos
mkdir -p ${HOME}/minio/data
docker run \
-p 9000:9000 \
-p 9001:9001 \
--user $(id -u):$(id -g) \
--name minio1 \
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
-v ${HOME}/minio/data:/data \
quay.io/minio/minio server /data --console-address ":9001"
- windows
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio1 \
--security-opt "credentialspec=file://path/to/file.json"
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
-v D:\data:/data \
quay.io/minio/minio server /data --console-address ":9001"
备注
windows下运行前提:
Windows Group Managed Service Account(gMSA)
已经定义。
上面的示例以以下方式工作:
-
docker run
启动运行容器。 -
-p
为容器绑定一个本地的端口. -
-name
为容器创建一个本地的名字。 -
--security-opt
:windows下运行需要配置。授予通过credentialspec
文件访问容器的权限,用于 组管理服务帐户 (gMSA) -
-v
设置文件路径作为容器要使用的持久卷位置。 当MinIO将数据写入/data
时,实际上是将数据写入本地路径D:\data
中,这样可以在容器重新启动之间保持持久。 您可以替换D:\data
为用户具有读取、写入和删除权限的另一个本地文件位置。 -
-e
分别为用户名和密码设置环境变量MINIO_ROOT_USER
和MINIO_ROOT_PASSWORD
。
3. 通过浏览器访问MinIO服务器
启动MinIO服务器后,命令行会生成两个链接地址,例如:Console: http://192.0.2.10:9001
http://127.0.0.1:9001
输出的两个地址,是系统自动根据本地IP生成的地址,这两个地都在没有防火墙和安全策略的情况下都有可能能访问到MinIO控制台。通过docker容器所在的节点+端口即可访问控制台。
监听的 9000 端口主要用于通过API连接时的访问, 当通过浏览器访问 9000 端口时浏览器会自动跳转至控制台。
MinIO Console控制台的登录凭据(用户名和密码)默认认置的环境变量通过 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
修改。
4. FAQ
- Centos7 x86机器下运行minio容器(镜像版本:RELEASE.2024-09-13T20-26-02Z)提示“Fatal glibc error: CPU does not support x86-64-v2”。
原因:Docker 镜像中的 glibc 版本要求 CPU 支持 x86-64-v2
指令集,而你的硬件不支持。
参考:https://github.com/minio/minio/issues/18365
解决:降低minio版本,降低为RELEASE.2023-10-25T06-33-25Z
或者更低。
5. 参考资料
- https://www.minio.org.cn/docs/minio/container/index.html
- https://www.minio.org.cn/docs/minio/container/administration/identity-access-management/minio-user-management.html#minio-users-root
- https://learn.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/manage-serviceaccounts