这个 docker 日志条目是什么意思?

这个 docker 日志条目是什么意思?

几分钟前,我的电脑崩溃了,显然是因为硬盘满了。在恢复模式下启动后,我发现 /var/log 中的 syslog 文件64GB很大。我将文件末尾保存在另一个分区上,然后将其删除。显然,docker 似乎是问题所在,因为我在文件末尾发现了很多这样的内容,并且有一个 docker 进程一直以 200% 的 CPU 运行。清除日志并终止 docker 后,一切似乎都正常了。

Nov 15 01:44:08 Elemental docker.dockerd[1120]: 
time="2019-11-15T01:44:08.727060251Z" level=error 
msg="failed to get event" error="rpc error: code = 
Unavailable desc = all SubConns are in TransientFailure, latest connection 
error: connection error: desc = \"transport: Error 
while dialing dial unix /run/containerd/containerd.sock: 
connect: permission denied\"" module=libcontainerd namespace=plugins.moby
Nov 15 01:44:08 Elemental docker.dockerd[1120]:     time="2019-11-15T01:44:08.727116701Z" 
...

等等。我希望这个问题不会再出现,但我仍然想知道这里可能发生了什么。

答案1

我同时通过 apt 和 snap 安装了 docker 包。因此,通过 snap 打包系统删除 docker 即可解决问题。

# apt list --installed | grep docker   
docker/bionic,now 1.5-1build1 amd64 [installed]
docker-ce/bionic,now 5:19.03.5~3-0~ubuntu-bionic amd64 [installed]
docker-ce-cli/bionic,now 5:19.03.5~3-0~ubuntu-bionic amd64 [installed,automatic]

# snap list | grep docker
docker                18.09.9                     418   stable    canonical✓  -

# snap remove docker
docker removed

答案2

几个小时前,Cannonical 的某个人把事情搞砸了——它在启动板上被追踪——https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1852720

我的系统昨天只安装了 docker,和这里的其他人一样 - syslog 杀死了磁盘上的所有可用空间,从 snap 中清除 docker 有所帮助。

答案3

您有多个 docker 服务正在运行。dockerd 似乎正在尝试访问 containerd 的不同安装,并向 syslog 发送垃圾邮件。

就我而言,teamcity 代理和 docker 安装发生冲突。

sudo apt-get purge docker-ce
sudo apt autoremove
sudo rm -rf /var/lib/docker
sudo truncate -s 0 /var/log/syslog

运行上述命令并重新启动。一切顺利。

答案4

我也遇到了这个问题,所以为了防止其他人在这里徘徊,我可以描述对我有用的解决方案。我首先尝试了 Chris Sung 的建议,但没有奏效。

症状如下:

  1. dockerb 的 CPU 使用率超过 200%,并且会不断使用 kill 命令重启

  2. Philip Z. 看到系统日志中充满了巨大的文件。今天早上我进来的时候,我的整个硬盘里都塞满了一个 700GB 的文件。

首先删除这个大文件,这样你才能真正开始做事。它会再次开始填满,但你应该有一些时间。

sudo truncate -s 0 /var/log/syslog

然后删除 snap docker 安装。这是我的问题,而不是 docker-ce

sudo snap stop docker
sudo snap remove docker

我不确定这是否有必要,但我还是决定彻底摆脱 snap

sudo apt purge snap

您应该不再在 top 中看到 dockerb。然后,您可以重新运行日志截断器以删除执行上述命令时写入的任何垃圾。如果您像我一样搞砸了并完全删除了 syslog,请确保为新 syslog 授予正确的权限。

sudo cd /var/log
sudo touch syslog
sudo chown syslog:adm syslog
sudo service rsyslog restart

相关内容