在Docker中运行MinIO。
springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)
MinIO 需要一个持久卷来存储配置和应用数据。不过, 如果只是为了测试一下, 您可以通过简单地传递一个目录(在下面的示例中为/ data
)启动MinIO。这个目录会在容器启动时在容器的文件系统中创建,不过所有的数据都会在容器退出时丢失。
docker run -p 9000:9000 \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
minio/minio server /data
要创建具有永久存储的MinIO容器,您需要将本地持久目录从主机操作系统映射到虚拟配置~/.minio
并导出/data
目录。 为此,请运行以下命令
GNU/Linux 和 macOS
docker run -p 9000:9000 \
--name minio1 \
-v /mnt/data:/data \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
minio/minio server /data
Windows
docker run -p 9000:9000 \
--name minio1 \
-v D:\data:/data \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
minio/minio server /data
Docker Compose允许定义和运行单主机,多容器Docker应用程序。
使用Compose,您可以使用Compose文件来配置MinIO服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式MinIO实例。 分布式MinIO实例将部署在同一主机上的多个容器中。 这是建立基于分布式MinIO的开发,测试和预发布环境的好方法。
MinIO Docker提示
MinIO自定义Access和Secret密钥
要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为环境变量。 MinIO允许常规字符串作为Access和Secret密钥。
GNU/Linux 和 macOS
docker run -p 9000:9000 --name minio1 \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
-v /mnt/data:/data \
minio/minio server /data
Windows
docker run -p 9000:9000 --name minio1 \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \
-v D:\data:/data \
minio/minio server /data
以普通用户身份运行MinIO Docker
Docker提供了标准化的机制,可以以非root用户身份运行docker容器。
GNU/Linux 和 macOS
在 Linux 和 macOS 上, 你可以使用 --user
以普通用户身份来运行容器。
注意: 在使用
--user
前,一定要确保--user指定的用户具备
${HOME}/data 的写入权限。
mkdir -p ${HOME}/data
docker run -p 9000:9000 \
--user $(id -u):$(id -g) \
--name minio1 \
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY" \
-v ${HOME}/data:/data \
minio/minio server /data
Windows
在windows上, 你需要用到 Docker集成Windows身份验证 和 创建具有Active Directory支持的容器 的能力
注意: 在使用
credentialspec=
时,要确保你的AD/Windows用户具备
D:\data 的写入权限。
docker run -p 9000:9000 \
--name minio1 \
--security-opt "credentialspec=file://myuser.json"
-e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \
-e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY" \
-v D:\data:/data \
minio/minio server /data
使用Docker secrets进行MinIO Access和Secret密钥自定义
要覆盖MinIO的自动生成的密钥,你可以把secret和access秘钥创建成Docker secrets. MinIO允许常规字符串作为Access和Secret密钥。
echo "AKIAIOSFODNN7EXAMPLE" | docker secret create access_key -
echo "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" | docker secret create secret_key -
使用docker service
创建MinIO服务,并读取Docker secrets。
docker service create --name="minio-service" --secret="access_key" --secret="secret_key" minio/minio server /data
更多 docker service
信息,请访问 这里
自定义MinIO Access和Secret密钥文件
要使用其他密钥名称,请把上面的access_key
和 secret_key
替换为你自定义的名称(比如my_secret_key
,my_custom_key
)。使用如下命令运行服务
docker service create --name="minio-service" \
--secret="my_access_key" \
--secret="my_secret_key" \
--env="MINIO_ROOT_USER_FILE=my_access_key" \
--env="MINIO_ROOT_PASSWORD_FILE=my_secret_key" \
minio/minio server /data
获取容器ID
在容器中使用Docker命令, 你需要知道这个容器的 容器ID
。 为了获取 Container ID
, 运行
docker ps -a
-a
flag 确保你获取所有的容器(创建的,正在运行的,退出的),然后从输出中识别Container ID
。
启动和停止容器
启动容器,你可以使用 docker start
命令。
docker start
停止一下正在运行的容器, 使用 docker stop
命令。
docker stop
MinIO容器日志
获取MinIO日志,使用 docker logs
命令。
docker logs
监控MinioDocker容器
监控MinIO容器使用的资源,使用 docker stats
命令.
docker stats
Docker Compose允许定义和运行单主机,多容器Docker应用程序。
使用Compose,您可以使用Compose文件来配置MinIO服务。 然后,使用单个命令,您可以通过你的配置创建并启动所有分布式MinIO实例。 分布式MinIO实例将部署在同一主机上的多个容器中。 这是建立基于分布式MinIO的开发,测试和预发布环境的好方法。
1. 前提条件
- 熟悉 Docker Compose.
- Docker已经在本机安装,从这里下载相关的安装器。
2. 在Docker Compose上运行分布式MinIO
在Docker Compose上部署分布式MinIO,请下载docker-compose.yaml到你的当前工作目录。Docker Compose会pull MinIO Docker Image,所以你不需要手动去下载MinIO binary。然后运行下面的命令
GNU/Linux and macOS
docker-compose pull
docker-compose up
Windows
docker-compose.exe pull
docker-compose.exe up
现在每个实例都可以访问,端口从9001到9004,请在浏览器中访问http://127.0.0.1:9001/
注意事项
- 默认情况下Docker Compose file使用的是最新版的MinIO server的Docker镜像,你可以修改image tag来拉取指定版本的MinIO Docker image.
默认情况下会创建4个minio实例,你可以添加更多的MinIO服务(最多总共16个)到你的MinIO Compose deployment。添加一个服务
- 复制服务定义并适当地更改新服务的名称。
- 更新每个服务中的命令部分。
- 更新要为新服务公开的端口号。 另外,请确保分配给新服务的端口尚未使用。
- Docker compose file中的MinIO服务使用的端口是9001到9004,这允许多个服务在主机上运行。