问题
最近需要在红帽上面离线安装minio,并且还是要离线安装到服务器中的Docker里面去。
检查服务器磁盘
# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs xxxxsx-xxx-xxx-sxx /boot
└─sda2 LVM2_member xxxxsx-xxx-xxx-sxx
├─rhel-root xfs xxxxsx-xxx-xxx-sxx /
├─rhel-swap swap xxxxsx-xxx-xxx-sxx
└─rhel-home xfs xxxxsx-xxx-xxx-sxx /home
从lsblk -f
命令可以看出,这台服务器只有一个磁盘,使用了xfs的格式。minio是建议用xfs格式的,而且,如果想要部署单节点多驱动的方式安装,最好是有4个以上磁盘。我们这里选择单节点单驱动,毕竟只有1台服务器1块磁盘,一般业务系统也够用了。
检查服务器Linux发行版
# cat /etc/*release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.9:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.9
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.9"
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Red Hat Enterprise Linux Server release 7.9 (Maipo)
从这个命令,就可以确认是红帽7.9企业版。
离线导入minio镜像
拉取Docker minio镜像
现在回到我们本地开发环境,然后,使用docker命令获取minio在quay上面的镜像:
docker pull quay.io/minio/minio
然后,再把刚刚拉取下来的minio镜像,导出为一个普通文件:
docker save -o minio_image.docker quay.io/minio/minio
得到minio_image.docker文件后,将这个镜像文件通过sftp上传到服务器上面。然后,开始在服务器上面导入这个minio文件,命令如下:
docker load -i minio_image.docker
导入完成后,使用如下命令检查:
docker images | grep mini
quay.io/minio/minio latest xxxxx 13 hours ago 151MB
创建minio配置文件
vim /etc/default/minio
内容如下:
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment
MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me
# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
MINIO_VOLUMES="/mnt/data"
# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"
创建docker容器
准备一个文件数据目录:
mkdir -p ~/minio/data
创建并运行mini容器:
podman run -dt \
-p 9000:9000 -p 9001:9001 \
-v ~/minio/data:/mnt/data \
-v /etc/default/minio:/etc/config.env \
-e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
--name "minio" \
quay.io/minio/minio server --console-address ":9001"
使用如下命令,查看容器启动日志:
docker logs minio
如果出现如下错误:
standard_init_linux.go:211: exec user process caused "exec format error"
可能是本地拉取到的docker镜像与服务器要使用的docker镜像,cpu架构不一致,可以通过如下命令查看服务器cpu架构:
arch
服务器结果为x86_64
,而我的本地开发机为mac m1属于arm架构。需要重新拉取指定架构的docker镜像重现导入到服务器中:
# 删除旧镜像
docker image rm quay.io/minio/minio
docker pull --platform linux/amd64 quay.io/minio/minio
重现导入docker镜像之后,重新创建docker镜像。
测试
最后,在web页面登录minio。效果如下:
总结
minio单节点单驱动,对于一般小项目来说,还是挺容易的。
参考
- Deploy MinIO: Single-Node Single-Drive
- Downloading docker image for transfer to non-internet-connected machine
- Docker volume plugins
- Multi-platform images