Docker 容器磁盤佔用100%

問題:

root@anxxxx-prod1:~# df -h
Filesystem                                       Size  Used Avail Use% Mounted on
udev                                             3.9G     0  3.9G   0% /dev
tmpfs                                            799M  3.4M  795M   1% /run
/dev/vda1                                         99G   96G     0 100% /
tmpfs                                            3.9G  548K  3.9G   1% /dev/shm
tmpfs                                            5.0M     0  5.0M   0% /run/lock
tmpfs                                            3.9G     0  3.9G   0% /sys/fs/cgroup
3f5be49b80-fuf99.cn-shanghai.nas.aliyuncs.com:/   10P   18G   10P   1% /mnt
none                                              99G   96G     0 100% /var/lib/docker/aufs/mnt/da4441ba96f3a657e90e289da6f59090bb41baba95355b1b62e239e0000a17af
none                                              99G   96G     0 100% /var/lib/docker/aufs/mnt/aaf7527a3a42fc6d3695dc95d6ddb6bc6473337bf14d5fa3debf4ba70c5be70e
shm                                               64M     0   64M   0% /var/lib/docker/containers/019052bc4d2c1c0367abdca83222ca2dc4a9bc88a264aa5d8e1f4575f4f59d45/shm
shm                                               64M     0   64M   0% /var/lib/docker/containers/f0fbd839ff52f77a9f1d4a13772194553c2a3d52f8cd76547da696c6e683973a/shm
tmpfs                                            799M     0  799M   0% /run/user/0
none                                              99G   96G     0 100% /var/lib/docker/aufs/mnt/3ca913d1e6aad8c7908c949b4f2472fde89d1c6f10d2fb29779287fa4c9c3efb
shm                                               64M     0   64M   0% /var/lib/docker/containers/bc9fe7700f8c8f5d249ff2e710515218969b0f09bd39d82d90e6622f71f8152d/shm

刪除了鏡像之後,只是減少了輕微的used使用率(減少了3G空間)

緊接着清理虛懸鏡像

docker system prune -a

查找系統中的大文件

 find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr # 查找"/"目錄下所有大於100M的所有文件
...
...
175M    /root/log/monolith/monolith.2019-11-23.09.log
175M    /root/log/monolith/monolith.2019-11-23.07.log
175M    /mnt/backup/mysql/backup/2019-08-01-22:28:56/prod-mysql.mysql.rds.aliyuncs.com/data/db_ankobot.sql.gz
125M    /root/log/monolith/monolith.2019-12-10.11.log
123M    /mnt/test.ankobot.com/uploads/facesets/facesets.zip
121M    /root/log/monolith/monolith.2019-11-23.05.log
69G /var/lib/docker/containers/bc9fe7700f8c8f5d249ff2e710515218969b0f09bd39d82d90e6622f71f8152d/bc9fe7700f8c8f5d249ff2e710515218969b0f09bd39d82d90e6622f71f8152d-json.log
1.7G    /var/lib/docker/containers/019052bc4d2c1c0367abdca83222ca2dc4a9bc88a264aa5d8e1f4575f4f59d45/019052bc4d2c1c0367abdca83222ca2dc4a9bc88a264aa5d8e1f4575f4f59d45-json.log
0   /proc/kcore

發現/var/lib/docker/containers/{container_id}/下存在數據較大的*-json.log日誌文件,百度發現這是docker容器運行的標準輸入日誌,遂刪除之。項目中已使用-v的方式掛載項目輸出日誌文件,因此對容器運行日誌沒有了需求,研究後發現在構建參數的時候可以對標準輸入日誌大小與數量進行限制,以減少日誌文件對存儲空間的佔用,以下配置分別爲日誌文件最大容量、最大日誌文件數
清空了日誌文件

root@anxxxx-prod1:~# echo '' > /var/lib/docker/containers/bc9fe7700f8c8f5d249ff2e710515218969b0f09bd39d82d90e6622f71f8152d/bc9fe7700f8c8f5d249ff2e710515218969b0f09bd39d82d90e6622f71f8152d-json.log
docker run ...... --log-opt max-size=10m --log-opt max-file=1

也可以在docker的配置文件中進行全局修改:新建或修改/etc/docker/daemon.json,添加log-dirver和log-opts參數(daemon.json參數說明:

{
   "log-driver":"json-file",
   "log-opts": {"max-size":"10m", "max-file":"1"}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章