記一次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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章