Docker overlay2磁盤占用過高主要有以下三個原因:
??1、容器日志文件過大,未作限制
??2、docker未用容器、鏡像、緩存等過多
??3、docker默認(rèn)路徑存放不合理
一、磁盤容量查詢
??通過以下兩條命令可以定位磁盤占用過高原因,可根據(jù)查詢結(jié)果做相應(yīng)處置。
1、df -h 容量查詢
[root@hostname ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 50G 35M 100% /
overlay 50G 50G 35M 100% /data/docker/overlay2/770abd1b64f51f05a0f7c5c71d7349f54c9c152c8f58263ea9dda4960a722d61/merged
overlay 50G 50G 35M 100% /data/docker/overlay2/19de54ababc18c2eb4c0d011434ac785480169a4e694c736dcbe938d497b5b3f/merged
overlay 50G 50G 35M 100% /data/docker/overlay2/78f613526719dd1eabd3fe1f383ca55f065182e538f81cb719dd53d01055e849/merged
overlay 50G 50G 35M 100% /data/docker/overlay2/a18694da44feba8f8379f422fdf67c00a1ac97efb281f8578770b7da4d55ad6a/merged
2、du -sh * 文件大小查詢
#逐級排查大文件位置
[root@hostname ~]# du -sh /*
7.2G /var
[root@hostname ~]# du -sh /var/*
37G /opt/open
[root@hostname ~]# du -sh /var/lib/*
6.6G /var/lib/docker
二、磁盤占用過高處理方法
1、日志文件清理
??docker容器運行時會產(chǎn)生大量日志,默認(rèn)路徑:/var/lib/docker/containers/id-json.log,隨著容器運行該日志文件會占用大量磁盤空間。
1.1 日志清空
[root@test ~]# echo '' > 容器id-json.log
注:不要直接刪除日志文件,否則可能會影響新日志產(chǎn)生。
1.2 限制日志文件大小
??以上方法只能暫時解決日志占用空間過大問題,如果想一勞永逸可修改docker配置文件,增加日志文件大小限制。
[root@test ~]# vi /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m",
"max-file":"1"
}
}
1.3 重啟dokcer
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker
注:已存在的容器不會生效,需要重建該容器才可以使配置生效
2、歷史數(shù)據(jù)清理
??Docker長時間運行,會產(chǎn)生大量無用的鏡像、容器、網(wǎng)絡(luò)等緩存信息,占用大量磁盤空間。此時我們可以使用prune命令清理。
2.1 釋放所有未使用資源
[root@test ~]# docker system prune
WARNING! This will remove:
- all stopped containers //清理停止容器
- all networks not used by at least one container //清理未使用網(wǎng)絡(luò)
- all dangling images //清理廢棄鏡像
- all dangling build cache //清理構(gòu)建緩存
Are you sure you want to continue? [y/N] y
Deleted Containers:
7a7fdd019a89eb68325d45ee6821c3f6f9a0b68b5631a21665ec484d59c8a44a
Total reclaimed space: 202.4kB
注:數(shù)據(jù)清理前一定要檢查是否還有需要使用的容器和鏡像,避免誤清理。文章來源:http://www.zghlxwxcb.cn/news/detail-633252.html
2.2 按需清理
[root@test ~]# docker image prune //清理廢棄鏡像
[root@test ~]# docker container prune //清理停止容器
[root@test ~]# docker network prune //清理未使用網(wǎng)絡(luò)
[root@test ~]# docker system prune //清理構(gòu)建緩存
3、修改Docker運行路徑
注:此方法需停止容器,遷移docker運行目錄,請在業(yè)務(wù)空閑期,備份好數(shù)據(jù)后操作。
??Docker運行時使用的目錄默認(rèn) “/var/lib/docker”,該目錄占用根目錄磁盤空間,根目錄磁盤容量普遍較小。日常生成環(huán)境Linux常會掛載大容量數(shù)據(jù)盤,可以將Docker默認(rèn)運行目錄修改到數(shù)據(jù)盤。
?修改Docker運行路徑有兩種方法:
??1、遷移/var/lib/docker數(shù)據(jù),創(chuàng)建軟連接。此種方法不需要改配置文件。
??2、遷移/var/lib/docker數(shù)據(jù),修改docker配置文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-633252.html
3.1 遷移/var/lib/docker數(shù)據(jù),創(chuàng)建軟連接
#docker運行目錄在/var/lib/docker下
[root@test ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
#停止所有容器,避免遷移時影響業(yè)務(wù)
[root@test ~]# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#將docker默認(rèn)運行目錄剪切到opt目錄
[root@test ~]# mv /var/lib/docker /opt/
#查詢是否已剪切完成
[root@test ~]# ls /opt/
containerd docker hio rh
#新運行目錄創(chuàng)建軟連接
[root@test ~]# ln -s /opt/docker /var/lib/docker
#重啟docker服務(wù)
[root@test ~]# systemctl restart docker
#啟動所有容器
[root@test ~]# docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#檢查原鏡像是否存在
[root@test ~]# docker images
#檢查容器是否運行正常
[root@test ~]# docker ps
#檢查docker默認(rèn)路徑是否切換成功,已切換到/opt/docker下
[root@test ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
3.2 遷移/var/lib/docker數(shù)據(jù),修改docker配置
#docker運行目錄在/var/lib/docker下
[root@test ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay 50G 5.8G 45G 12% /var/lib/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
#停止所有容器,避免遷移時影響業(yè)務(wù)
[root@test ~]# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#將docker默認(rèn)運行目錄剪切到opt目錄
[root@test ~]# mv /var/lib/docker /opt/
#查詢是否已剪切完成
[root@test ~]# ls /opt/
containerd docker hio rh
#修改docker配置文件,添加 "data-root"路徑
[root@test ~]# vi /etc/docker/daemon.json
{
"data-root": "/opt/docker"
}
#重啟docker服務(wù)
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker
#啟動所有容器
[root@test ~]# docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#檢查原鏡像是否存在
[root@test ~]# docker images
#檢查容器是否運行正常
[root@test ~]# docker ps
#檢查docker默認(rèn)路徑是否切換成功,已切換到/opt/docker下
[root@test ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/176c72f3913eea50a7bded4ad65363280680615c083140c725cfa63e4287cc51/merged
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/4e844541eb13d9c7af1c01f0b4681915e617c650c22a20e52f4b77e1e90dc369/merged
overlay 50G 5.8G 45G 12% /opt/docker/overlay2/c9de256d8ded736cf99dddda4c4f68e9c5e5162e1b7e70abdb0cd3fbfbbb7a19/merged
到了這里,關(guān)于Docker overlay2磁盤占用過高的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!