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

docker部署項目/var/lib/docker/overlay2目錄滿了該如何清理

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

一、問題

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

df -h

看來是目錄 /var/lib/docker/overlay2 下占滿了磁盤,看看里面是什么。

二、解決

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

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

/var/lib/docker 目錄是 docker 的默認目錄,進去看看

cd /var/lib/docker

檢索文件的最大深度1,即只檢索匯總計算當前目錄下的文件

du -h --max-depth=1

(1)、containers 目錄

可以看到 containers 中占磁盤空間最大,這是 docker 存儲鏡像的目錄,進去看看里面有什么

看不出什么來,繼續(xù)進入

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

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

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

嗯。。。各個都不小,把他們?nèi)辶艘材芮宄鰜砗芸捎^的空間了。

等會停了容器再清。

(2)、volumes 目錄

這里接著看看 volumes 目錄

看到也是類似 containers 目錄的東西,先進第一個看看

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

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

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

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

du -h --max-depth=1

可以看到有5G多。。。

同樣的方式進入 volums 目錄中的第二個子目錄

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

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

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

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

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

(3)、overlay2 目錄

再看看 overlay2 目錄

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

du -h --max-depth=1

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

看看哪個文件夾比較大

du -h --max-depth=1

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

diff :

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

merged:

merged 文件夾是一個可讀寫的文件系統(tǒng)層,它是由基礎(chǔ)鏡像和 diff 文件夾合并而成的。當您啟動一個Docker容器時, merged 文件夾中的內(nèi)容將作為容器的文件系統(tǒng)。這個文件夾是容器運行時的可寫層,您可以在容器中對文件進行修改或添加新文件,這些修改將存儲在 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 是只讀的

賦予讀寫權(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 ========"

這是從這個老哥的博客中拿到的,很多博客都說這個腳本可以清除還在運行的docker日志,保險起見,我這里就先把運行的容器給停了。

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

sh docker_logs_clean.sh start

再看一下磁盤空間:

df -h

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

如果保存時報如下錯:

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

這是因為磁盤已滿,先手動清理一些空間出來。我這里就清除了一下 /var/lib/docker/volumes 目錄下的日志文件。

假如執(zhí)行清理腳本報錯:

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

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

cat -v docker_logs_clean.sh

cat -v 文件名:查看換行符是否合法,如果是上述的,則行結(jié)尾會是^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 目錄

假如不更新項目,只是想清一下日志,前面已經(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包。

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

docker system prune -a 

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

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

docker volume prune 

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

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

docker-compose down --rmi all

看一下docker-compose的容器

docker-compose ps

以及鏡像

docker-compose images

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

再查看一下 /var/lib/docker 目錄的磁盤占比

du -h --max-depth=1

可能是因為我前面已經(jīng)清理過日志文件了,看不出什么變化, /var/lib/docker/volumes 目錄占791M是jar包。

那再刪除一下卷:

docker volume prune

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

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

df -h

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

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

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

docker system prune -a

清除了2G的空間,再看一下docker磁盤占用

du -h --max-depth=1

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

(4)、限制docker日志大小

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

編輯 /etc/docker/daemon.json 文件,第一次應(yīng)該是沒有的,創(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的存儲驅(qū)動,常見的選項包括 “overlay2”、“aufs”、“btrfs”、“devicemapper” 和 “zfs”,一般為 “overlay2”。
storage-opts:存儲驅(qū)動程序選項。
log-driver:容器日志的默認驅(qū)動程序,默認為 “json-file” 。
log-opts:容器默認日志驅(qū)動程序選項。

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

systemctl daemon-reload

再重啟一下docker

systemctl restart docker

注意,重啟之后原來的鏡像和容器要刪除,不然重新啟動是報錯的?。?!

如果啟動容器時報如下錯就是因為沒有重新拉取鏡像。

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

假如重啟docker失敗

報錯如下:

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的單個容器日志

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

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

然后再使用docker-compose命令啟動容器。

總結(jié)

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

相關(guān)文章

  • docker部署nexus并啟用https方式

    docker部署nexus并啟用https方式

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

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

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

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

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

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

    在Docker中,-itd參數(shù)組合用于在后臺運行一個交互式容器,同時保持標準輸入和分配偽終端,這種方式適合需要在后臺運行容器并保持交互能力的場景
    2025-03-03
  • Docker中 container 和 image 的命名

    Docker中 container 和 image 的命名

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

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

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

    Docker 實用技巧總結(jié)

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

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

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

    docker-compose部署Yapi的方法

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

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

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

最新評論