欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理

 更新時(shí)間:2024年04月18日 11:09:51   作者:Percep_gan  
Docker中的/var/lib/docker/overlay2目錄是用于存儲(chǔ)Docker容器的數(shù)據(jù)層和鏡像層的,使用Docker一段時(shí)間后這個(gè)目錄可能會(huì)變得非常大,這篇文章主要給大家介紹了關(guān)于docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理的相關(guān)資料,需要的朋友可以參考下

一、問(wèn)題

今天突然發(fā)現(xiàn)跑服務(wù)器上的項(xiàng)目掛了,上去看了一下原來(lái)是磁盤(pán)滿了。

df -h

看來(lái)是目錄 /var/lib/docker/overlay2 下占滿了磁盤(pán),看看里面是什么。

二、解決

1、查看 /var/lib/docker 目錄

這一塊只是查找哪些文件占滿了磁盤(pán),不感興趣的朋友可以不看。

/var/lib/docker 目錄是 docker 的默認(rèn)目錄,進(jìn)去看看

cd /var/lib/docker

檢索文件的最大深度1,即只檢索匯總計(jì)算當(dāng)前目錄下的文件

du -h --max-depth=1

(1)、containers 目錄

可以看到 containers 中占磁盤(pán)空間最大,這是 docker 存儲(chǔ)鏡像的目錄,進(jìn)去看看里面有什么

看不出什么來(lái),繼續(xù)進(jìn)入

可以看到一個(gè) -json.log 的文件很大,竟然有4G多,這是 docker 的日志文件,看看 containers 目錄的其他子目錄是不是也有這個(gè)類型的文件

看來(lái)也有,并且和所在目錄同名,直接查看所有的 -json.log 目錄吧

du -ha /var/lib/docker/containers/ | grep "json.log" | sort -rh

嗯。。。各個(gè)都不小,把他們?nèi)辶艘材芮宄鰜?lái)很可觀的空間了。

等會(huì)停了容器再清。

(2)、volumes 目錄

這里接著看看 volumes 目錄

看到也是類似 containers 目錄的東西,先進(jìn)第一個(gè)看看

可以看到是一個(gè) _data 目錄,看不出什么,繼續(xù)進(jìn)入

其中 flow.jar 是我的jar包,目錄 logs 應(yīng)該就是日志文件了,進(jìn)去看看

還放在我的包名命名的目錄里,繼續(xù)進(jìn)入

也是很多的日志文件。。?;氐?logs 目錄統(tǒng)計(jì)一下吧

du -h --max-depth=1

可以看到有5G多。。。

同樣的方式進(jìn)入 volums 目錄中的第二個(gè)子目錄

可以看到也有2G多。。。

也可以直接查看目錄的詳細(xì)信息,命令如下:

du -ha /var/lib/docker/volumes/ | grep "info.*.log" | sort -rh

可以看到有很多的日志文件,單個(gè)雖然不大,但卻很多。

這里也先不清,后面再清。

(3)、overlay2 目錄

再看看 overlay2 目錄

雖然只有11G,但進(jìn)去發(fā)現(xiàn)目錄挺多,先看看各個(gè)目錄的大小

du -h --max-depth=1

找出最大的應(yīng)該目錄,看看里面有什么

看看哪個(gè)文件夾比較大

du -h --max-depth=1

可以看到 merged 和 diff 占磁盤(pán)空間比較大,work 目錄可以不用管。

diff :

diff 文件夾是一個(gè)只讀的文件系統(tǒng)層,它包含了Docker鏡像的變更內(nèi)容。當(dāng)您對(duì)容器進(jìn)行修改或添加新文件時(shí),這些變更會(huì)被記錄在 diff 文件夾中。每個(gè)Docker鏡像都有一個(gè)對(duì)應(yīng)的 diff 文件夾,用于存儲(chǔ)與基礎(chǔ)鏡像的差異。

merged:

merged 文件夾是一個(gè)可讀寫(xiě)的文件系統(tǒng)層,它是由基礎(chǔ)鏡像和 diff 文件夾合并而成的。當(dāng)您啟動(dòng)一個(gè)Docker容器時(shí), merged 文件夾中的內(nèi)容將作為容器的文件系統(tǒng)。這個(gè)文件夾是容器運(yùn)行時(shí)的可寫(xiě)層,您可以在容器中對(duì)文件進(jìn)行修改或添加新文件,這些修改將存儲(chǔ)在 merged 文件夾中。

2、清理

前面已經(jīng)知道了日志在

/var/lib/docker/containers
/var/lib/docker/volumes
/var/lib/docker/overlay2

(1)、清理 /var/lib/docker/containers 目錄

先創(chuàng)建清理腳本文件,這里名為 docker_logs_clean.sh ,可以自定義,命令如下:

touch docker_logs_clean.sh

查看文件可以發(fā)現(xiàn) docker_logs_clean.sh 是只讀的

賦予讀寫(xiě)權(quán)限,命令如下:

chmod +777 docker_logs_clean.sh

在這里插入圖片描述

然后在加入如下腳本:

echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
        do
                echo "clean containers logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker containers logs ========"

這是從這個(gè)老哥的博客中拿到的,很多博客都說(shuō)這個(gè)腳本可以清除還在運(yùn)行的docker日志,保險(xiǎn)起見(jiàn),我這里就先把運(yùn)行的容器給停了。

之后執(zhí)行腳本文件,命令如下:

sh docker_logs_clean.sh start

再看一下磁盤(pán)空間:

df -h

可以看到清理出一些空間了。

如果保存時(shí)報(bào)如下錯(cuò):

“docker_logs_clean.sh” E514: write error (file system full?)

這是因?yàn)榇疟P(pán)已滿,先手動(dòng)清理一些空間出來(lái)。我這里就清除了一下 /var/lib/docker/volumes 目錄下的日志文件。

假如執(zhí)行清理腳本報(bào)錯(cuò):

line 4: syntax error near unexpected token `$‘do\r’

可以用如下命令查看腳本文件換行符是否合法:

cat -v docker_logs_clean.sh

cat -v 文件名:查看換行符是否合法,如果是上述的,則行結(jié)尾會(huì)是^m
需要轉(zhuǎn)換成linux/unix格式的”\n”

原因:這可能是在window系統(tǒng)中創(chuàng)建好文件,再上傳到服務(wù)器,導(dǎo)致?lián)Q行符不符合Linux的格式。

解決辦法:

sed 's/\r//' docker_logs_clean.sh > docker_logs_clean.sh

(2)、清理 /var/lib/docker/volumes 目錄

假如不更新項(xiàng)目,只是想清一下日志,前面已經(jīng)查到 /var/lib/docker/volumes 目錄下的日志,這里重新查一下,命令如下:

find /var/lib/docker/volumes -name "*.log"

使用如下命令清除

find /var/lib/docker/volumes -type f -name "*.log" -delete

可以看到那些日志文件都清除了。

再檢查一下文件docker占比

du -h --max-depth=1

可以看到 /var/lib/docker/volumes 目錄只剩下791M了,這些是我的jar包。

假如要更新項(xiàng)目,則清除所有的鏡像,命令如下:

docker system prune -a 

輸入 y 回車就可以刪除了,我使用的是docker-compose部署的微服務(wù),這里就先不刪除。

刪除所有的卷,命令如下:

docker volume prune 

輸入 y 回車就可以刪除了,我使用的是docker-compose部署的微服務(wù),這里就先不刪除。

使用docker-compose時(shí)只清除項(xiàng)目鏡像和容器,需要 docker-compose.yml 文件所在目錄,我這里是 /www/wwwroot/changjing/jar ,命令如下

docker-compose down --rmi all

看一下docker-compose的容器

docker-compose ps

以及鏡像

docker-compose images

可以看到容器和鏡像都被刪除了。

再查看一下 /var/lib/docker 目錄的磁盤(pán)占比

du -h --max-depth=1

可能是因?yàn)槲仪懊嬉呀?jīng)清理過(guò)日志文件了,看不出什么變化, /var/lib/docker/volumes 目錄占791M是jar包。

那再刪除一下卷:

docker volume prune

可以看到 /var/lib/docker/volumes 目錄釋放了一些空間,應(yīng)該是把jar包清理了。

再查看一下服務(wù)器磁盤(pán)空間分布

df -h

應(yīng)該清得差不多了。

(3)、清理 /var/lib/docker/overlay2 目錄

經(jīng)過(guò)前面的清理只剩下 /var/lib/docker/overlay2 目錄占磁盤(pán)空間大一些了,使用刪除鏡像和容器的命令清理:

docker system prune -a

清除了2G的空間,再看一下docker磁盤(pán)占用

du -h --max-depth=1

可以看到 /var/lib/docker/overlay2 目錄也清理得差不多了。

(4)、限制docker日志大小

按照前面的方式清理,隔一段時(shí)間后磁盤(pán)又會(huì)被docker日志占滿,這里設(shè)置一下日志上限。

編輯 /etc/docker/daemon.json 文件,第一次應(yīng)該是沒(méi)有的,創(chuàng)建就好了,加入如下配置:

{
	"registry-mirrors": ["http://hub-mirror.c.163.com"],
	"storage-driver": "overlay2",
	"storage-opts": [
		"overlay2.override_kernel_check=true",
		"overlay2.size=15G"
	],
	"log-driver": "json-file",
	"log-opts": {
		"max-size": "1024m",
		"max-file": "3"
	}
}

解釋:

registry-mirrors:設(shè)置鏡像加速。
storage-driver:指定Docker的存儲(chǔ)驅(qū)動(dòng),常見(jiàn)的選項(xiàng)包括 “overlay2”、“aufs”、“btrfs”、“devicemapper” 和 “zfs”,一般為 “overlay2”。
storage-opts:存儲(chǔ)驅(qū)動(dòng)程序選項(xiàng)。
log-driver:容器日志的默認(rèn)驅(qū)動(dòng)程序,默認(rèn)為 “json-file” 。
log-opts:容器默認(rèn)日志驅(qū)動(dòng)程序選項(xiàng)。

然后重新加載一下docker的配置文件

systemctl daemon-reload

再重啟一下docker

systemctl restart docker

注意,重啟之后原來(lái)的鏡像和容器要?jiǎng)h除,不然重新啟動(dòng)是報(bào)錯(cuò)的?。?!

如果啟動(dòng)容器時(shí)報(bào)如下錯(cuò)就是因?yàn)闆](méi)有重新拉取鏡像。

docker: Error response from daemon: open /var/lib/docker/overlay2/2ef38eb701745d5e944dd8c04d404347cd1d7d87140ff48817c935901bcd9550/committed: no such file or directory.

假如重啟docker失敗

報(bào)錯(cuò)如下:

docker.socket: Failed with result ‘service-start-limit-hit’.

只要把 daemon.json 的改為 daemon.conf ,命令如下:

mv /etc/docker/daemon.json /etc/docker/daemon.conf

再次重啟就好了。

(5)、限制docker-compose的單個(gè)容器日志

這個(gè)只有使用docker-compose部署項(xiàng)目的小伙伴才能用到,在每個(gè)容器配置下加入如下配置:

logging:
  driver: "json-file"
  options:
    max-size: "256m"
    max-file: "3"

然后再使用docker-compose命令啟動(dòng)容器。

總結(jié)

到此這篇關(guān)于docker部署項(xiàng)目/var/lib/docker/overlay2目錄滿了該如何清理的文章就介紹到這了,更多相關(guān)/var/lib/docker/overlay2目錄滿了內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker部署nexus并啟用https方式

    docker部署nexus并啟用https方式

    這篇文章主要介紹了docker部署nexus并啟用https方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說(shuō)明

    docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說(shuō)明

    這篇文章主要介紹了docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker 容器自定義 hosts 網(wǎng)絡(luò)訪問(wèn)操作

    docker 容器自定義 hosts 網(wǎng)絡(luò)訪問(wèn)操作

    這篇文章主要介紹了docker 容器自定義 hosts 網(wǎng)絡(luò)訪問(wèn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 解讀docker運(yùn)行時(shí)-itd參數(shù)是什么意思

    解讀docker運(yùn)行時(shí)-itd參數(shù)是什么意思

    在Docker中,-itd參數(shù)組合用于在后臺(tái)運(yùn)行一個(gè)交互式容器,同時(shí)保持標(biāo)準(zhǔn)輸入和分配偽終端,這種方式適合需要在后臺(tái)運(yùn)行容器并保持交互能力的場(chǎng)景
    2025-03-03
  • Docker中 container 和 image 的命名

    Docker中 container 和 image 的命名

    這篇文章主要介紹了Docker中container和image的命名,文章基于Docker的相關(guān)資料展開(kāi)對(duì)container和image的命名介紹,需要的小伙伴可以參考一下
    2022-04-04
  • cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)詳解

    cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)詳解

    這篇文章主要為大家介紹了cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Docker 實(shí)用技巧總結(jié)

    Docker 實(shí)用技巧總結(jié)

    這篇文章主要介紹了Docker 實(shí)用技巧總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Docker安裝配置ES(elasticsearch)步驟詳解

    Docker安裝配置ES(elasticsearch)步驟詳解

    這篇文章主要給大家介紹了關(guān)于Docker安裝配置ES(elasticsearch)的相關(guān)資料,本文主要介紹了如何在指定目錄下安裝ES和Kibana,以及如何用IK分詞器進(jìn)行分詞,需要的朋友可以參考下
    2024-10-10
  • docker-compose部署Yapi的方法

    docker-compose部署Yapi的方法

    這篇文章主要介紹了docker-compose部署Yapi,需要的朋友可以參考下
    2022-04-04
  • Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins是基于Java開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開(kāi)放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。本文介紹了Jenkins Docker持續(xù)集成,分享給大家
    2021-05-05

最新評(píng)論