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

docker垃圾清理方式

 更新時(shí)間:2025年03月06日 09:13:59   作者:R-sz  
文章主要介紹了如何刪除Docker鏡像和容器、清理Docker磁盤(pán)空間以及配置Docker日志大小,通過(guò)這些方法可以有效地管理Docker資源,避免磁盤(pán)空間不足的問(wèn)題

一.docker鏡像與容器刪除

docker images    #查看所以鏡像
docker ps      #查看正在運(yùn)行的容器
docker ps -a   #查看所有容器(無(wú)論是否在運(yùn)行)  
docker ps -a -q   #加上-q只顯示id

docker stop 容器名或id   #停止容器
docker rm 容器名或id    #刪除容器
docker rm -f 容器名或id    #強(qiáng)制刪除容器
docker rmi 鏡像名加上標(biāo)簽或id   #刪除鏡像
docker rmi -f 鏡像名加上標(biāo)簽或id  #強(qiáng)制刪除鏡像
docker rmi $(docker images | grep "<none>" )  
#使用grep匹配刪除所有為none的容器
docker rmi $(docker images -q)
# 要?jiǎng)h除全部image

二.docker磁盤(pán)空間清理

1.使用docker system清理

docker system df命令查看docker占用的磁盤(pán)空間,類(lèi)似linux的df命令

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          18        6         2.508GB   1.892GB (75%)
Containers      19        2         275.8MB   275.8MB (99%)
Local Volumes   95        3         140.9kB   140.9kB (100%)
Build Cache     0         0         0B        0B

可以看到,Docker鏡像占用了2.5GB磁盤(pán),Docker容器占用了275.8MB磁盤(pán),Docker數(shù)據(jù)卷占用了一點(diǎn)磁盤(pán)。

  • docker system prune命令可以用于清理磁盤(pán),刪除關(guān)閉的容器、無(wú)用的數(shù)據(jù)卷和網(wǎng)絡(luò),以及dangling鏡像(即無(wú)tag的鏡像)。
  • docker system prune -a命令清理得更加徹底,可以將沒(méi)有容器使用Docker鏡像都刪掉。這個(gè)很危險(xiǎn),一般不用

2. 手動(dòng)清理Docker鏡像/容器/數(shù)據(jù)卷

對(duì)于舊版的Docker(版本1.13之前),是沒(méi)有docker system命令的

對(duì)于docker而言,一點(diǎn)點(diǎn)的容器鏡像空間是沒(méi)有多少的,日志是大頭

所以刪除日志才是王道(刪之前要考慮清楚哦)

在linux上,Docker的所有相關(guān)文件,包括鏡像、容器等一般都保存在/var/lib/docker/目錄中:

使用du命令查看占用

du -hs /var/lib/docker/
3.4G    /var/lib/docker/

剛建立不是很多,但是還是有點(diǎn)大的

使用du命令繼續(xù)查看,可以定位到真正占用這么多磁盤(pán)的目錄

3.4G    /var/lib/docker/overlay2

發(fā)現(xiàn)是overlay2占用的,overlay2 是 Docker 默認(rèn)的存儲(chǔ)驅(qū)動(dòng)之一,主要用于管理容器的文件系統(tǒng)層(Layer)

它存儲(chǔ)的是 鏡像層和容器層的數(shù)據(jù),這個(gè)一般不直接清理,通過(guò)刪除容器和鏡像清理

但是上次在云服務(wù)器上有個(gè)服務(wù)宕機(jī)了,一查發(fā)現(xiàn)是空間不夠?qū)е聰?shù)據(jù)庫(kù)連不上,趕緊釋放了一些資源

后面發(fā)現(xiàn)是/var/lib/docker/containers占了200多G

發(fā)現(xiàn)是一個(gè)比賽平臺(tái)的日志占用了190多G這就對(duì)了,每天請(qǐng)求這么多,日志不多才怪

使用truncate命令,可以將容器的日志文件“清零”:

truncate -s 0 /var/lib/docker/containers/容器id/*-json.log

當(dāng)然,這個(gè)命令只是臨時(shí)有作用,日志文件遲早又會(huì)漲回來(lái)。要從根本上解決問(wèn)題,需要限制容器的日志文件大小。這個(gè)可以通過(guò)配置日志的max-size來(lái)實(shí)現(xiàn),可以通過(guò)容器的docker-compose配置文件我是gzctf平臺(tái),為 gzctf 和 db 服務(wù)添加 logging 配置:

 logging:
      driver: "json-file"
      options:
        max-size: "10g"
        max-file: "3"

重啟容器之后,其日志文件的大小就被限制在30GB,分三個(gè)文件,再也不用擔(dān)心了!

在重啟docker,刷新磁盤(pán)狀態(tài)

三、Docker目錄/var/lib/docker/containers文件太大

Docker在不重建容器的情況下,日志文件默認(rèn)會(huì)一直追加,時(shí)間一長(zhǎng)會(huì)逐漸占滿(mǎn)服務(wù)器的硬盤(pán)的空間,內(nèi)存消耗也會(huì)一直增加,我們要加以控制

1. 查出占用磁盤(pán)較大的文件

Docker 的日志文件存在 /var/lib/docker/containers 目錄中,通過(guò)下面的命令可以將日志文件夾根據(jù)升序的方式羅列出來(lái)。

sudo du -d1 -h /var/lib/docker/containers | sort -h

2. 清理單個(gè)文件

感覺(jué)哪個(gè)容器的日志太大就清理哪個(gè)

sudo sh -c "cat /dev/null > 文件的決定地址"

這只是臨時(shí)解決的方式,最好是創(chuàng)建容器時(shí)就控制日志的大小.

啟動(dòng)容器時(shí),我們可以通過(guò)參數(shù)來(lái)控制日志的文件個(gè)數(shù)和單個(gè)文件的大小

# max-size 最大數(shù)值
# max-file 最大日志數(shù)
$ docker run -it --log-opt max-size=10g --log-opt max-file=3 redis
#在dockerfile目錄內(nèi)

一兩個(gè)容器還好,但是如果有很多容器需要管理,這樣就很不方便了,最好還是可以統(tǒng)一管理

3. 全局配置

創(chuàng)建或修改文件 /etc/docker/daemon.json,并增加以下配置

{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m","max-file":"1"
    }
}

這個(gè)配置是用于 Docker 日志驅(qū)動(dòng)及日志選項(xiàng)的設(shè)置,主要功能是控制 Docker 容器日志文件的生成方式和大小限制,下面詳細(xì)解釋各部分含義:

整體作用:

此配置一般會(huì)放在 /etc/docker/daemon.json 文件里,屬于 Docker 守護(hù)進(jìn)程的全局配置,對(duì)新創(chuàng)建的容器生效。其目的是規(guī)范容器日志的存儲(chǔ)格式、大小以及文件數(shù)量,防止日志文件過(guò)度占用磁盤(pán)空間。

具體配置項(xiàng)解釋?zhuān)?/strong>

1. "log-driver":"json-file"

  • log-driver 指的是 Docker 采用的日志驅(qū)動(dòng)類(lèi)型。日志驅(qū)動(dòng)決定了容器日志的存儲(chǔ)和輸出方式。
  • json-file 表示使用 JSON 文件作為日志存儲(chǔ)格式。當(dāng)容器產(chǎn)生日志時(shí),日志內(nèi)容會(huì)以 JSON 格式記錄到文件中,每個(gè)日志條目是一個(gè) JSON 對(duì)象,包含時(shí)間戳、日志級(jí)別、日志消息等信息。這種格式便于機(jī)器解析和處理日志數(shù)據(jù)。

2. "log-opts"

  • log-opts 是日志驅(qū)動(dòng)的具體選項(xiàng),用來(lái)進(jìn)一步配置日志的存儲(chǔ)和管理規(guī)則。

3. "max-size" :"50m"

  • max-size 定義了單個(gè)日志文件的最大大小。這里設(shè)置為 "50m",即 50MB。
  • 當(dāng)單個(gè)日志文件達(dá)到 50MB 時(shí),Docker 會(huì)自動(dòng)創(chuàng)建一個(gè)新的日志文件繼續(xù)記錄日志,以此避免單個(gè)日志文件過(guò)大。

4. "max-file":"1"

  • max-file 規(guī)定了日志文件的最大數(shù)量。這里設(shè)置為 "1",意味著最多只保留 1 個(gè)日志文件。
  • 當(dāng)新的日志文件創(chuàng)建后,舊的日志文件會(huì)被自動(dòng)刪除,以保證日志文件數(shù)量不超過(guò)設(shè)定值。結(jié)合 max-size 為 50MB 和 max-file 為 1 的設(shè)置,容器日志文件占用的磁盤(pán)空間最大不會(huì)超過(guò) 50MB。

示例總結(jié):

該配置使得 Docker 容器的日志以 JSON 文件格式存儲(chǔ),每個(gè)日志文件最大為 50MB,并且最多只保留 1 個(gè)日志文件。這樣做能有效控制容器日志占用的磁盤(pán)空間,防止因日志文件不斷增長(zhǎng)而耗盡磁盤(pán)資源。不過(guò)要注意,此配置對(duì)已經(jīng)存在的容器不會(huì)生效,只有新創(chuàng)建的容器才會(huì)遵循這些規(guī)則。

隨后重啟 Docker 服務(wù)

sudo systemctl daemon-reload
sudo systemctl restart docker

不過(guò)已存在的容器不會(huì)生效,需要重建才可以!

還有

{
    "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
    "registry-mirrors": [
        "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
     "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"
    ],
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"20m","max-file":"3"
    }
}

這段配置是 Docker 構(gòu)建器(Builder)的垃圾回收(Garbage Collection,GC)相關(guān)配置,通常在 Docker 的配置文件(如 daemon.json)中使用,下面為你詳細(xì)解釋各部分的含義。

整體功能概述:

此配置主要用于控制 Docker 構(gòu)建過(guò)程中產(chǎn)生的臨時(shí)文件和中間層的垃圾回收機(jī)制,目的是有效管理磁盤(pán)空間,避免構(gòu)建過(guò)程中產(chǎn)生的大量臨時(shí)數(shù)據(jù)占用過(guò)多磁盤(pán)。

具體配置項(xiàng)解釋?zhuān)?/strong>

1."builder"

  • 這是一個(gè)頂級(jí)配置項(xiàng),用于對(duì) Docker 構(gòu)建器的各項(xiàng)參數(shù)進(jìn)行設(shè)置。
  • 構(gòu)建器負(fù)責(zé)執(zhí)行 Docker 鏡像的構(gòu)建任務(wù),此配置塊中的內(nèi)容會(huì)影響構(gòu)建器在構(gòu)建過(guò)程中的行為。

2."gc"

  • 這是 builder 下的子配置項(xiàng),代表垃圾回收(Garbage Collection)相關(guān)的設(shè)置。
  • 垃圾回收機(jī)制會(huì)定期清理構(gòu)建過(guò)程中不再需要的臨時(shí)文件和中間層,釋放磁盤(pán)空間。

3."defaultKeepStorage": "20GB"

  • defaultKeepStorage 定義了在執(zhí)行垃圾回收操作后,構(gòu)建器默認(rèn)保留的磁盤(pán)空間大小。
  • 這里設(shè)置為 "20GB",意味著在進(jìn)行垃圾回收時(shí),構(gòu)建器會(huì)嘗試清理不再使用的臨時(shí)數(shù)據(jù),直到構(gòu)建過(guò)程所占用的磁盤(pán)空間不超過(guò) 20GB。也就是說(shuō),即使有大量可清理的中間層和臨時(shí)文件,構(gòu)建器也會(huì)保留至少 20GB 的磁盤(pán)空間用于后續(xù)的構(gòu)建操作。

4."enabled": true

  • enabled 是一個(gè)布爾值,用于開(kāi)啟或關(guān)閉構(gòu)建器的垃圾回收功能。
  • 設(shè)置為 true 表示啟用垃圾回收機(jī)制,構(gòu)建器會(huì)定期檢查并清理不再使用的臨時(shí)數(shù)據(jù);若設(shè)置為 false,則垃圾回收機(jī)制將被禁用,構(gòu)建過(guò)程中產(chǎn)生的臨時(shí)數(shù)據(jù)不會(huì)被自動(dòng)清理,這可能會(huì)導(dǎo)致磁盤(pán)空間被大量占用。

總結(jié)

這段配置開(kāi)啟了 Docker 構(gòu)建器的垃圾回收功能,并規(guī)定在垃圾回收后至少保留 20GB 的磁盤(pán)空間用于構(gòu)建操作。通過(guò)合理配置垃圾回收機(jī)制,可以有效管理磁盤(pán)空間,確保 Docker 構(gòu)建過(guò)程的穩(wěn)定性和高效性。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker compose入門(mén)helloworld的詳細(xì)過(guò)程

    docker compose入門(mén)helloworld的詳細(xì)過(guò)程

    docker-compose是基于docker的,所以我們需要先安裝docker才能使用docker-compose,接下來(lái)通過(guò)本文給大家介紹docker compose入門(mén)helloworld的過(guò)程,一起看看吧
    2021-09-09
  • 在Docker上安裝配置Oracle教程

    在Docker上安裝配置Oracle教程

    本篇文章主要介紹了在 Docker 上配置 Oracle教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • 解決docker修改mysql配置文件的問(wèn)題

    解決docker修改mysql配置文件的問(wèn)題

    今天在用docker啟動(dòng)一個(gè)5.7的數(shù)據(jù)庫(kù)在建表時(shí)候遇到一個(gè)問(wèn)題,但是很快就解決了,下面小編給大家講解下docker怎么修改mysql內(nèi)部的配置,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • Docker 容器全部停止的幾種方法實(shí)現(xiàn)

    Docker 容器全部停止的幾種方法實(shí)現(xiàn)

    我們需要停止所有的容器時(shí),可以使用一些命令來(lái)實(shí)現(xiàn),本文主要介紹了Docker 容器全部停止的幾種方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • docker安裝使用xdebug的過(guò)程

    docker安裝使用xdebug的過(guò)程

    這篇文章主要介紹了docker安裝使用xdebug的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Docker nacos集群部署的實(shí)現(xiàn)

    Docker nacos集群部署的實(shí)現(xiàn)

    本文將深入探討如何使用Docker來(lái)部署Nacos集群,從而實(shí)現(xiàn)服務(wù)的快速擴(kuò)展、高可用性和可維護(hù)性,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 深入解析docker文件分層原理

    深入解析docker文件分層原理

    這篇文章主要介紹了docker文件分層,本文使用一個(gè)docker container示例,講述docker的文件分層的一些原理,需要的朋友可以參考下
    2022-04-04
  • Docker?安裝Redis?無(wú)法使用配置文件設(shè)置密碼問(wèn)題及解決方法

    Docker?安裝Redis?無(wú)法使用配置文件設(shè)置密碼問(wèn)題及解決方法

    最近開(kāi)發(fā)需要使用各種組件,如果都到開(kāi)發(fā)機(jī)上安裝,會(huì)占用電腦資源較多,所以使用docker容器來(lái)安裝這些組件,這篇文章主要介紹了Docker安裝Redis無(wú)法使用配置文件設(shè)置密碼問(wèn)題,需要的朋友可以參考下
    2023-08-08
  • IDEA 通過(guò)docker插件發(fā)布springboot項(xiàng)目的詳細(xì)教程

    IDEA 通過(guò)docker插件發(fā)布springboot項(xiàng)目的詳細(xì)教程

    這篇文章主要介紹了IDEA 通過(guò)docker插件發(fā)布springboot項(xiàng)目的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Docker部署FastDFS的實(shí)現(xiàn)方法

    Docker部署FastDFS的實(shí)現(xiàn)方法

    這篇文章主要介紹了Docker部署FastDFS的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論