前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次磁盘清理导致的docker启动失败

一次磁盘清理导致的docker启动失败

作者头像
Kevinello
发布2022-08-19 11:25:15
2.2K0
发布2022-08-19 11:25:15
举报

前言

近日想要在我的云服务器上安装graphviz时,发现我的根目录盘满了(直到现在也是快满的状态,服务商说根目录无法扩容🤔🤔🤔)

image-20220608191344505
image-20220608191344505

于是通过逐层执行du -h --max-depth=1,我着手删除了一些比较占磁盘空间的文件

image-20220608191818424
image-20220608191818424

并且顺手扩容了这台云主机的磁盘,reboot了一下,

然后我发现我的docker没有正常地自动启动,尝试手动启动也失败了

需要了解的词

  • systemctl 用于控制systemd服务,类比k8s中的kubectl
  • 软链接(symbolic link) 一个文件在某一路径下的同步链接(不重复占用磁盘空间,且实时同步)

Failed to get D-Bus connection

首先遇到的报错就是这个了

代码语言:javascript
复制
# systemctl start docker
Failed to get D-Bus connection: Operation not permitted

不多废话直接Google,但按大家描述的场景都是在docker容器内使用systemctl时出现的这种情况

image-20220612180413718
image-20220612180413718

具体原因是systemd是需要特权(CAP_SYS_ADMIN)去访问Linux内核的;而容器并不是一个完整的操作系统,只有一个文件系统,并且默认启动的容器只是普通用户(non-privileged)这样的权限,是没有CAP_SYS_ADMIN权限的,所以自然就用不了systemctl

这里也许是因为我的云服务器服务商扩容或是重启时权限出错了,再次reboot后就正常了

Authorization not available

很快我又遇到了第二个报错

代码语言:javascript
复制
Authorization not available. Check if polkit service is running or see debug message for more information

google一番后找到了答案,是/var下的一些软链接被我错误清理了

The symbolic link between /run, /run/lock to /var/run, /var/lock respectively was removed which causes the service not to properly run.

重建这两个软链接后就恢复正常了

代码语言:javascript
复制
# mv /var/run /var/run.old
# mv /var/lock /var/lock.old
# ln -s /run /var/
# ln -s /run/lock /var/

最后验证下刚刚创建的软链接:

代码语言:javascript
复制
# ls -l /var/run
# ls -l /var/lock

期望的输出:

代码语言:javascript
复制
$ ls -l /var/run
lrwxrwxrwx. 1 root root 6 May 11 2022 /var/run -> ../run
$ ls -l /var/lock
lrwxrwxrwx. 1 root root 11 May 11 2016 /var/lock -> ../run/lock

同步下更改,然后重启服务器:

代码语言:javascript
复制
# sync; sync
# reboot

验证docker服务状态:

image-20220613010718288
image-20220613010718288

至此一切恢复岁月静好

总结

以此契机深入了解了systemd服务,并且,不要乱删文件

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 需要了解的词
  • Failed to get D-Bus connection
  • Authorization not available
  • 总结
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档