记一次docker磁盘用尽的灾难
背景:测试服务器突然mongodb和mysql连接不上,出现了问题,卡的一批。查看日志发现,docker根目录磁盘被占满,提示no space left on device(磁盘空间不足)。[root@bogon /]# df -h文件系统容量已用可用 已用% 挂载点overlay50G50G1M...
·
背景:测试服务器突然mongodb和mysql连接不上,出现了问题,卡的一批。查看日志发现,docker根目录磁盘被占满,提示no space left on device(磁盘空间不足)。
[root@bogon /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
overlay 50G 50G 1M 100% /home/docker/lib/docker/overlay/fdbed49072631b3b95b3629ebe8aaf7c55c63decb56e17c17d4f41ef2e3f45b8/merged
overlay 50G 50G 1M 100% /home/docker/lib/docker/overlay/0b196569723e4529025ae93ed17f08d55e9cb3c6654c3d7d7d90f71e8da5bd0c/merged
查看磁盘使用情况命令:
df -h
解决方案:
磁盘满了,是因为docker默认ROOT目录是:/var/lib/docker ,我这边测试服务器所在磁盘50GB,很快就被占满了。
所以,需要迁移docker目录到更大的磁盘上。
1 停止docker服务。
systemctl stop docker
2 创建新的docker目录,执行命令df -h,找一个大的磁盘。 我在 /home目录下面建了 /home/docker/lib目录,
3 迁移/var/lib/docker目录下面的文件到 /home/docker/lib:
rsync -avz /var/lib/docker /home/docker/lib/
迁移完成后:发现原来docker目录下的内容被复制过来了。
[root@bogon docker]# pwd
/home/docker/lib/docker
[root@bogon docker]# ls
containers image network overlay plugins swarm tmp tmp-old trust volumes
[root@bogon docker]#
4.通过修改 docker daemon的配置文件的方式来保存我们修改,方法如下:
docker daemon 会有一个默认的configuration 文件,此外,我们可以新建一个名为“daemon.json”的文件,我们在这个文件中定义的属性,会覆盖默认配置文件的配置信息。
进入到/etc/docker,新建并编辑daemon.json文件:
cd /etc/docker
vim daemon.json
添加如下配置到文件中:"graph"的值就是你指定的新的docker ROOT目录。
{
"graph": "/home/docker/lib/docker"
}
重载配置:
systemctl daemon-reload
重启docker服务
systemctl restart docker
最后,查看docker info的信息,如下图,已经是最新的设置了。
再次查看磁盘信息df -h, 发现已经是迁移到了最新磁盘上。
最后,启动对应容器,测试连接,均正常。
END
更多推荐
已为社区贡献2条内容
所有评论(0)