记一次docker磁盘用尽的灾难

背景:测试服务器突然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

发布了80 篇原创文章 · 获赞 190 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/wdy_2099/article/details/103967788
今日推荐