1 问题背景
玩一个前后端的项目,需要用到对象存储器,于是使用开源的MinIO。期间以Docker方式搭建遇到某些坑,此处仅以博客的方式记录下来
2 资源准备
- Linux操作系统,笔者使用CentOS 7
- 安装Docker服务
3 安装Docker服务
此处笔者采用网上在线安装的方式,几条命令就可以搞定了
# 安装yum工具
yum install -y yum-utils
# 设置 yum 仓库地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新 yum 缓存
yum makecache fast
# 安装Docker服务
yum install -y docker-ce docker-ce-cli containerd.io
# 设置自启动Docker服务
systemctl enable docker
# 重启Docker服务
systemctl restart docker
# 检查Docker服务是否已经成功运行
systemctl status docker
4 关闭防火墙
如果使用的是云服务器,不建议关闭防火墙。如果没有关闭防火墙,那么启动docker容器的时候,需要在防火墙添加容器端口,否则无法访问。如果关闭了防火墙,则必须重启Docker服务,否则也会有问题。
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙自启动
systemctl disable firewalld.service
# 重启Docker服务
systemctl restart docker
5 以Docker方式安装MinIO
下载MinIO镜像
docker pull minio/minio
启动MinIO容器
docker run -p 9000:9000 -p 9001:9001 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /mydata/minio/data:/data \
-v /mydata/minio/config:/root/.minio \
minio/minio server --console-address ":9000" --address ":9001" /data
参数解释:
-
MINIO_ROOT_PASSWORD
的值必须大于或等于8个字符 -
-v
,挂在数据卷,持久化数据 -
minio/minio server /data
,这是启动MinIO Server的命令 -
--console-address ":9000"
,指定访问控制台的端口号,不指定会访问不了 -
--address ":9001"
,api端口号,不能与控制台端口号相同 - 使用容器搭建,必须要使用
-p
指定2个端口号,否则物理机无法访问到虚拟机里面的minio容器的端口,最终会导致无法访问MinIO中的对象(比如无法访问图片) - 此处
9000
是作为访问MinIO控制台的端口,而9001
是作为访问资源的端口(比如访问存储在MinIO中的图片) - 根据笔者的配置,此处图片访问地址则是:
服务器IP:9001/桶名/资源名
6 访问MinIO
访问地址:服务器IP:9000
账号:minio
密码:minio123