docker启动minio容器异常

前言:第一次在这里记录,各位大佬请指正,感谢!后续会将个人之前遇到的坑都记录在这里,大家共同交流学习。

一、minio服务器磁盘耗尽

  1)docker服务启动异常

        命令:systemctl start docker

      异常信息:Authorization not available. Check if polkit service is running or see debug message for more information.

      解决方案:

      1、查看磁盘使用情况,命令:df -h  ,结果如下,磁盘 /dev/vda1已满  ,新挂载一块磁盘  /dev/vdb。

        可以删除一些日志文件,释放部分空间。

        Filesystem Size Used Avail Use% Mounted on

        devtmpfs        12G    0  12G  0% /dev

        tmpfs            12G  24K  12G  1% /dev/shm

        tmpfs            12G  1.2G  11G  11% /run

        tmpfs            12G    0  12G  0% /sys/fs/cgroup

        /dev/vda1        79G  78G    0 100% /

        /dev/vdb        985G  1.9G  933G  1% /data

      2、查看内存使用情况,命令:free -h,结果如下,可以看到爆满

                                    total used free shared buff/cache available

                Mem:            23G        897M        406M        1.2G        22G        20G

                Swap:            0B          0B          0B

        在此,粗暴的执行了释放内存命令(前提是确保机器没有其它应用)

        [root@VM_129_70_linux containerd]# sync

        [root@VM_129_70_linux containerd]# echo 3 > /proc/sys/vm/drop_caches

      3、查看docker配置,命令:cat /usr/lib/systemd/system/docker.service,没有异常,在这里还折腾重装了docker,结果依然是又报错,但是查看docker状态已经是running,所以继续往下解决其它问题。 命令:systemctl status docker -l

   2)minio启动报错   

        [root@VM_129_70_linux containerd]#  docker run -d -p 9000:9000 -p 9090:9090 --        name=minio --restart=always -e "MINIO_ROOT_USER=admin" -e        "MINIO_ROOT_PASSWORD=1234" -v /home/data:/data -v /home/config:/root/.minio          minio/minio server /data --console-address ":9090" --address ":9000"

        1fe8c75f59d9c87838bdbadb70357beb500d1ea8408b67b371a88f28a987861d

        docker: Error response from daemon: failed to start shim: start failed: io.containerd.runc.v2:        open        /run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/1fe8c75f59d9c87838bd        badb70357beb500d1ea8408b67b371a88f28a987861d/.address: no such file or directory:        exit status 1: unknown.

        表象是容器下面的.address 文件不存在,即创建失败,到对应目录下看1fe8c75f59d9        容器文件夹都没有创建。

        查看docker状态(systemctl status docker -l),找到如下报错日志:

        Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-        27T16:51:41.154845492+08:00" level=error msg="copy shim log" error="read        /proc/self/fd/14: file already closed"

        Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.155256573+08:00" level=error msg="stream copy error: reading from a closed fifo"

        Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.155295978+08:00" level=error msg="stream copy error: reading from a closed fifo"

        Jan 27 16:51:41 VM_129_70_linux dockerd[3450]: time="2024-01-27T16:51:41.254273868+08:00" level=error msg="1fe8c75f59d9c87838bdbadb70357beb500d1ea8408b67b371a88f28a987861d cleanup: failed to delete container from cont... such container

原因出现在 /proc/self/fd/14,网上找了很多资料,这个问题始终没有解决。最后联想到前面内存和磁盘空间爆满,意识到是进程管道相关异常了,系统在资源管理已经存在缺失,决定联系管理员重启机器赌一把。结果是:问题得到解决,docker启动和文件流关闭的问题都正常了。

二、minio文件目录迁移

      1、下载和安装mc客户端

            由于是内网环境,mc是本地下载完成后上传到机器的,下载地址:

https://dl.min.io/client/mc/release/linux-amd64/mc

https://dl.min.io/client/mc/release/linux-amd64/mc

          安装:

                chmod a+x mc

                mv mc /usr/local/bin/

                mv --version

    2、启动两个minio服务

        //源服务

        docker run -d -p 9000:9000 -p 9090:9090 --name=minio-old --restart=always -e        "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=1234" -v        /home/data:/data -v /home/config:/root/.minio  minio/minio server /data --console-address ":9090" --address ":9000"

        //目标服务

        docker run -d -p 9003:9003 -p 9093:9093 --name=minio-new --restart=always -e        "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=1234" -v        /data/minio:/data -v /home/config:/root/.minio  minio/minio server /data --console-address ":9093" --address ":9003"

    3、mc添加服务

        mc alias set minio-old http://127.0.0.1:9000 admin 1234

        mc alias set minio-new http://127.0.0.1:9003 admin 1234

      4、执行迁移脚本

        mc mirror  minio-old minio-new

        执行的是全量迁移,可以根据不同场景选择迁移脚本,参考脚本如下:

        #1. 全量迁移,重名文件不覆盖,如bucket不存在,会自动创建

        mc mirror  minio-old minio-new

        #2. 只迁移某个bucket,以test为例,迁移的目标bucket需要提前创建

        mc mirror  minio-old/test  minio-new/test  #test要提前在minio-new中创建

        #3. 加上--overwrite参数,覆盖重名文件

        mc mirror  --overwrite  minio-old minio-new

        mc mirror  --overwrite  minio-old/test  minio-new/test

    5、重新制定文件目录

      将新的minio服务指向原有端口,之前的应用就可以无感访问了。

      指向新的服务后,很多资源不可访问,报错Access Denied

        解决方案:

        1)查看了nginx配置和防火墙相关配置,均无异常。

        2)后来发现是桶的权限变成了private,通过控制台更改成public即可正常访问。暂不清楚迁移为什么会改变访问权限。

最后问题得到圆满解决,继续探索~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容