Minio资源迁移
✅作者简介:大家好,我是爪哇小小怪,目前就职于武汉某IT公司,两年JAVA开发经验。
今天分享一个关于Minio资源迁移的文章。
去年六月,我自费了37元购买了一台云服务器,主要是为了深入掌握Linux系统的操作命令,并加强对项目运维部署的实践。随着当前服务器的到期日期临近,我意识到需要将之前部署在上面的MinIO环境中存储的重要资源进行备份,并迁移至新的腾讯云服务器上。
在尝试迁移过程中,我了解到腾讯云提供了资源镜像迁移的功能。然而,我尝试使用这一功能时,发现迁移过程异常漫长,即使电脑持续运行超过30小时,也未见明显进展。鉴于这种情况,我果断决定中止迁移过程。
由于我最初在云服务器上部署MinIO时采用了Docker技术,因此在此,我主要分享如何通过使用Docker来迁移MinIO中存储的重要资源。
操作步骤
-
使用docker ps -a命令查看minio当前是否正常运行
当MinIO status(状态)是up时,则一切是正常的状态
-
在root目录下使用命令新建一个minio_data目录··
mkdir minio_data
-
使用docker cp minio:/data ./minio_data 命令将
minio
容器的/data
目录复制到宿主机的minio_data
目录中。操作成功后如下图所示:
这里为了进一步验证是否成功也可以通过ls 命令 和 cd命令去查看minio_data目录下是否存在文件
-
完成以上3步操作后,去创建一个dockerfile,在dockerfile中输入以下内容
FROM minio/minio COPY minio_data /data ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"] CMD ["minio", "server", "/data"]
相关解释
FROM minio/minio
:这一行定义了基础镜像,这里是官方的MinIO镜像。这意味着你的新镜像将从这个已存在的、包含了MinIO服务的镜像开始构建。COPY minio_data /data
:这行命令将主机(Host)上的
minio_data目录复制到新建的Docker镜像内的
/data目录。在MinIO服务器运行时,
/data`通常用于存储对象存储的数据。ENTRYPOINT [“/usr/bin/docker-entrypoint.sh”]
:
ENTRYPOINT指令定义了容器启动时执行的主进程。这里设置为
/usr/bin/docker-entrypoint.sh`,这是一个通常由Docker镜像提供,用于设置环境、初始化系统等任务的脚本。CMD [“minio”, “server”, “/data”]
:
CMD指令提供了默认的命令参数,当容器启动且没有其他命令指定时,会执行这个命令。这里启动MinIO服务器,并指定数据存储路径为
/data总结:这个Dockerfile创建了一个Docker镜像,该镜像基于MinIO的基础镜像,启动时会运行MinIO服务器,使用
/data
目录作为数据存储位置,且可能在启动前执行一些初始化操作(如docker-entrypoint.sh
)。 -
使用docker build 构建一个新的minio镜像,这个新的镜像是基于第4步中的Dockerfile构建自定义的minio镜像,注意dockerfile和minio_data必须在同一个目录下,执行相关命令必须是在root目录下进行。
-
构建完成后,输入docker images,进行确认构建的镜像是否存在
通过此处可以看到minio_1镜像已经成功进行构建
-
使用docker save -o minio_1.tar minio/minio:latest 将其打包为一个tar包,并通过ftp或scp将这个tar包传输至新的服务器上
-
传输完成后,可通过ls命令检测tar包是否已经传输到了新服务器上
-
在根目录下,执行mkdir minio_data命令来新建一个名为minio_data的文件夹,该文件夹将作为MinIO的挂载目录。
-
完成第9步后,切换到root 目录下使用docker load相关命令导入加载镜像
docker load -i minio_1.tar
-
加载完成后,再使用docker images 命令查看镜像是否已经存在了
-
镜像如果存在,则进行最后一步,使用docker run命令 执行启动这个镜像
docker run -d \ -p 9000:9000 \ -p 9001:9001 \ --name minio_1 \ --restart=always \ -e "MINIO_ROOT_USER=minioadmin" \ -e "MINIO_ROOT_PASSWORD=minioadmin" \ -v /minio_data:/minio_data \ -v /home/minio/config:/root/.minio \ minio_1 server /minio_data --console-address ":9001"
相关解释如下:
docker run -d
:docker run
: 启动一个新的容器实例。-d
: 以“分离模式”(detached mode)运行容器,这意味着容器将在后台运行,并且你不会看到其输出。
-p 9000:9000 -p 9001:9001
:- 这两个
-p
标志将主机的端口映射到容器中的端口。 9000:9000
: 将主机的 9000 端口映射到容器的 9000 端口(通常是 MinIO 的数据端口)。9001:9001
: 将主机的 9001 端口映射到容器的 9001 端口(这里用于 MinIO 的控制台)。
--name minio_1
:- 为容器指定一个名称,这里是
minio_1
。
--restart=always
:- 无论容器退出时是什么状态,Docker 都会始终重启该容器。这确保了 MinIO 服务的可用性。
-e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=minioadmin"
:- 这两个
-e
标志用于设置环境变量。 - 第一个设置 MinIO 的根用户名为
minioadmin
。 - 第二个设置 MinIO 的根用户密码为
minioadmin
。
-v /minio_data:/minio_data -v /home/minio/config:/root/.minio
:- 这两个
-v
标志用于将主机的目录或文件挂载到容器中。 /minio_data:/minio_data
: 将主机上的/minio_data
目录挂载到容器中的/minio_data
目录。这意味着 MinIO 将在这个目录中存储其数据。/home/minio/config:/root/.minio
: 将主机上的/home/minio/config
目录挂载到容器中的/root/.minio
目录。这通常用于存储 MinIO 的配置文件。
minio_1 server /minio_data --console-address ":9001"
:- 这部分是传递给 MinIO 容器实例的命令。
server /minio_data
: 启动 MinIO 服务器,并使用/minio_data
目录作为存储数据的根目录。--console-address ":9001"
: 设置 MinIO 控制台的监听地址为 9001 端口。
-
执行启动后,使用docker ps -a检查minio使用运行正常,运行正常的效果图如下:
-
接着输入对应的ip地址看是否可以访问minio,(提示:minio的端口别忘记在服务器的防火墙规则上进行放行),正常访问的效果图如下: