亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

docker垃圾清理方式

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

一.docker鏡像與容器刪除

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

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

二.docker磁盤空間清理

1.使用docker system清理

docker system df命令查看docker占用的磁盤空間,類似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磁盤,Docker容器占用了275.8MB磁盤,Docker數據卷占用了一點磁盤。

  • docker system prune命令可以用于清理磁盤,刪除關閉的容器、無用的數據卷和網絡,以及dangling鏡像(即無tag的鏡像)。
  • docker system prune -a命令清理得更加徹底,可以將沒有容器使用Docker鏡像都刪掉。這個很危險,一般不用

2. 手動清理Docker鏡像/容器/數據卷

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

對于docker而言,一點點的容器鏡像空間是沒有多少的,日志是大頭

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

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

使用du命令查看占用

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

剛建立不是很多,但是還是有點大的

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

3.4G    /var/lib/docker/overlay2

發(fā)現是overlay2占用的,overlay2 是 Docker 默認的存儲驅動之一,主要用于管理容器的文件系統層(Layer)

它存儲的是 鏡像層和容器層的數據,這個一般不直接清理,通過刪除容器和鏡像清理

但是上次在云服務器上有個服務宕機了,一查發(fā)現是空間不夠導致數據庫連不上,趕緊釋放了一些資源

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

發(fā)現是一個比賽平臺的日志占用了190多G這就對了,每天請求這么多,日志不多才怪

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

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

當然,這個命令只是臨時有作用,日志文件遲早又會漲回來。要從根本上解決問題,需要限制容器的日志文件大小。這個可以通過配置日志的max-size來實現,可以通過容器的docker-compose配置文件我是gzctf平臺,為 gzctf 和 db 服務添加 logging 配置:

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

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

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

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

Docker在不重建容器的情況下,日志文件默認會一直追加,時間一長會逐漸占滿服務器的硬盤的空間,內存消耗也會一直增加,我們要加以控制

1. 查出占用磁盤較大的文件

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

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

2. 清理單個文件

感覺哪個容器的日志太大就清理哪個

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

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

啟動容器時,我們可以通過參數來控制日志的文件個數和單個文件的大小

# max-size 最大數值
# max-file 最大日志數
$ docker run -it --log-opt max-size=10g --log-opt max-file=3 redis
#在dockerfile目錄內

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

3. 全局配置

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

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

這個配置是用于 Docker 日志驅動及日志選項的設置,主要功能是控制 Docker 容器日志文件的生成方式和大小限制,下面詳細解釋各部分含義:

整體作用:

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

具體配置項解釋:

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

  • log-driver 指的是 Docker 采用的日志驅動類型。日志驅動決定了容器日志的存儲和輸出方式。
  • json-file 表示使用 JSON 文件作為日志存儲格式。當容器產生日志時,日志內容會以 JSON 格式記錄到文件中,每個日志條目是一個 JSON 對象,包含時間戳、日志級別、日志消息等信息。這種格式便于機器解析和處理日志數據。

2. "log-opts"

  • log-opts 是日志驅動的具體選項,用來進一步配置日志的存儲和管理規(guī)則。

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

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

4. "max-file":"1"

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

示例總結:

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

隨后重啟 Docker 服務

sudo systemctl daemon-reload
sudo systemctl restart docker

不過已存在的容器不會生效,需要重建才可以!

還有

{
    "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 構建器(Builder)的垃圾回收(Garbage Collection,GC)相關配置,通常在 Docker 的配置文件(如 daemon.json)中使用,下面為你詳細解釋各部分的含義。

整體功能概述:

此配置主要用于控制 Docker 構建過程中產生的臨時文件和中間層的垃圾回收機制,目的是有效管理磁盤空間,避免構建過程中產生的大量臨時數據占用過多磁盤。

具體配置項解釋:

1."builder"

  • 這是一個頂級配置項,用于對 Docker 構建器的各項參數進行設置。
  • 構建器負責執(zhí)行 Docker 鏡像的構建任務,此配置塊中的內容會影響構建器在構建過程中的行為。

2."gc"

  • 這是 builder 下的子配置項,代表垃圾回收(Garbage Collection)相關的設置。
  • 垃圾回收機制會定期清理構建過程中不再需要的臨時文件和中間層,釋放磁盤空間。

3."defaultKeepStorage": "20GB"

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

4."enabled": true

  • enabled 是一個布爾值,用于開啟或關閉構建器的垃圾回收功能。
  • 設置為 true 表示啟用垃圾回收機制,構建器會定期檢查并清理不再使用的臨時數據;若設置為 false,則垃圾回收機制將被禁用,構建過程中產生的臨時數據不會被自動清理,這可能會導致磁盤空間被大量占用。

總結

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • docker compose入門helloworld的詳細過程

    docker compose入門helloworld的詳細過程

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

    在Docker上安裝配置Oracle教程

    本篇文章主要介紹了在 Docker 上配置 Oracle教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 解決docker修改mysql配置文件的問題

    解決docker修改mysql配置文件的問題

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

    Docker 容器全部停止的幾種方法實現

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

    docker安裝使用xdebug的過程

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

    Docker nacos集群部署的實現

    本文將深入探討如何使用Docker來部署Nacos集群,從而實現服務的快速擴展、高可用性和可維護性,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 深入解析docker文件分層原理

    深入解析docker文件分層原理

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

    Docker?安裝Redis?無法使用配置文件設置密碼問題及解決方法

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

    IDEA 通過docker插件發(fā)布springboot項目的詳細教程

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

    Docker部署FastDFS的實現方法

    這篇文章主要介紹了Docker部署FastDFS的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12

最新評論