因为配置Docker时没注意,我把NAS系统搞爆了

6 篇文章 0 订阅

来自🥬🐶程序员 Truraly | 田园 的博客,最新文章首发于:田园幻想乡 | 原文链接 | github (欢迎关注)


最近在重塑消息源(不希望天天依靠 B 站来获取信息了,太容易被其他东西吸引注意了),准备在自己的小主机上部署一个RSShub,期间发生了亿点点意外,以下是复盘

因为小主机使用CasaOS面板来管理 docker,所以我很自然地考虑使用 CasaOS 来部署 RSShub(因为对于命令行部署的 docker 容器 CasaOS 只能提供有限的管理功能)

使用 CasaOS 部署的时候选择了 docker-compose 的方式,但是我是第一次尝试用 CasaOS 的这个功能

部署的时候有个弹窗,如图:

在这里插入图片描述

但是我没有特别在意(伏笔 1)

然后继续部署,中间有些 warning,我没特别在意去看

部署完,访问 RSShub 实例的时候第一次很正常,但是第二次就无法访问了,F12 一看网页网页控制台输出发现 500 了,怀疑是服务器的问题,所以去看 docker 日志,发现了

Redis error:  getaddrinfo ENOTFOUND

这样的报错,查询了一下发现和网络有关(解决 Redis 报错:Error getaddrinfo ENOTFOUND),查看了 CasaOS 的配置,我认为是 CasaOS 没有正确解析文件,导致没有配好 docker 网络,进而导致主服务没有正确访问到 Redis 服务(RssHub 的 docker-compose 部署版本有 3 个服务)

检查 CasaOS 的配置的时候我发现 redis 的/data 目录挂载在了小主机的根目录下,这个地方感觉很可疑,但当时我觉得问题不在这里(伏笔 2)

同时翻阅日志的时候发现了chwon的字样,有点疑惑但是没太在意(伏笔 3)

然后我准备去登陆小主机,准备用命令行来部署,然后发现登陆不上去了,无论是 root 还是普通用户,都无法登陆,报错如下:

kex_exchange_identification

噔噔咚!

于是重启小主机,启动后检查发现,一些 docker 应用没有正常启动,我还以为是硬盘挂载问题(因为之前有过这个问题,我是用 USB 连接的)

我 ssh 登陆上去(这个时候 ssh 能登陆但是莫名其妙很慢)检查硬盘,发现硬盘没有自动挂载(这个地方也很可疑),然后手动挂载硬盘

挂载之后 docker 应用还是不能启动,检查日志发现了一堆Permission denied的报错

修改了对应权限的读写权限,然后发现还是不行,而且权限似乎又被改回去了

上课去了,上课的时候,联系了挂载,权限,想到可能是 docker 的 Redis 容器导致的问题

晚上回来,尝试检查系统,发现 ufw,su,sudo 等一系列基础命令都无法使用,报错类似于

sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位

好在 chown 还能用,然后尝试一个一个修改权限,但是很快发现,修改完很快就被改回去了

我在想是哪个用户干的,但是没找到 id 为 999 的用户

百思不得其解的时候,我又去翻看了 docker 日志和 CasaOS 的配置,然后我突然意识到:

tmd,CasaOS 把 redis 的/data 目录挂载到了根目录,然后 Redis 容器循环修改文件权限,导致外面爆炸了!!!!

进入 Redis 的容器,发现里面也有大量文件属于 999 用户,这下确定了我的猜测

接下来就好办了,暂停了 CasaOS 的 docker-compose,使用命令行部署,然后逐步修改文件权限,但是怎么改呢?

我不知道文件权限在这之前是什么样的,查询得到如下命令:

sudo find / -user 999 -exec chown root:root {} +

这条命令可以找到所有属于 999 用户的文件,然后修改回 root 用户,这样似乎还没解决问题,不过主要问题源已经解决了,下面就是一下小文件的具体权限配置了,看哪里报错改哪里,慢慢就该回去了

这给我折腾了大概 3~4 个小时

总结一下,问题在于:

  • CasaOS 解析 docker-compose 文件功能并不完善,然后我也没有注意到提示
  • 发现 docker 挂载到根目录,但是意识不足

————————————————

版权声明:本文为 田园幻想乡 的原创文章,遵循 CC 4.0 BY-NA-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:http://truraly.fun/2024年/因为配置Docker时没注意,把系统搞爆了.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值