在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 <container_id>
停止一下正在运行的容器, 使用 docker stop
命令。
docker stop <container_id>
MinIO容器日志
获取MinIO日志,使用 docker logs
命令。
docker logs <container_id>
监控MinioDocker容器
监控MinIO容器使用的资源,使用 docker stats
命令.
docker stats <container_id>
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,这允许多个服务在主机上运行。
springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j)