国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何清理Docker占用的磁盤空間?

myshell / 1172人閱讀

摘要:但是,它有一個(gè)不大不小的問(wèn)題,會(huì)比較消耗磁盤空間。執(zhí)行命令之后,占用的磁盤空間減少了很多手動(dòng)清理鏡像容器數(shù)據(jù)卷對(duì)于舊版的版本之前,是沒(méi)有命令的,因此需要進(jìn)行手動(dòng)清理。進(jìn)一步分析可知,真正占用磁盤空間的是的日志文件。

摘要:用了 Docker,好處挺多的,但是有一個(gè)不大不小的問(wèn)題,它會(huì)一不小心占用太多磁盤,這就意味著我們必須及時(shí)清理。

作為一個(gè)有信仰的技術(shù)公司,我們Fundebug的后臺(tái)采用了酷炫的全 Docker 化架構(gòu),所有服務(wù),包括數(shù)據(jù)庫(kù)都運(yùn)行在 Docker 里面。這樣做當(dāng)然不是為了炫技,看得清楚的好處還是不少的:

所有服務(wù)器的配置都非常簡(jiǎn)單,只安裝了 Docker,這樣新增服務(wù)器的時(shí)候要簡(jiǎn)單很多。

可以非常方便地在服務(wù)器之間移動(dòng)各種服務(wù),下載 Docker 鏡像就可以運(yùn)行,不需要手動(dòng)配置運(yùn)行環(huán)境。

開發(fā)/測(cè)試環(huán)境與生產(chǎn)環(huán)境嚴(yán)格一致,不用擔(dān)心由于環(huán)境問(wèn)題導(dǎo)致部署失敗。

至少,上線這一年多來(lái),Docker 一直非常穩(wěn)定,沒(méi)有出什么問(wèn)題。但是,它有一個(gè)不大不小的問(wèn)題,會(huì)比較消耗磁盤空間。

如果 Docker 一不小心把磁盤空間全占滿了,你的服務(wù)也就算玩完了,因此所有 Docker 用戶都需要對(duì)此保持警惕。當(dāng)然,大家也不要緊張,這個(gè)問(wèn)題還是挺好解決的。

1. docker system 命令

在誰(shuí)用光了磁盤?Docker System 命令詳解中,我們?cè)敿?xì)介紹了docker system命令,它可以用于管理磁盤空間。

docker system df命令,類似于 Linux 上的df命令,用于查看 Docker 的磁盤使用情況:

docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              147                 36                  7.204GB             3.887GB (53%)
Containers          37                  10                  104.8MB             102.6MB (97%)
Local Volumes       3                   3                   1.421GB             0B (0%)
Build Cache                                                 0B                  0B

可知,Docker 鏡像占用了7.2GB磁盤,Docker 容器占用了104.8MB磁盤,Docker 數(shù)據(jù)卷占用了1.4GB磁盤。

docker system prune命令可以用于清理磁盤,刪除關(guān)閉的容器、無(wú)用的數(shù)據(jù)卷和網(wǎng)絡(luò),以及 dangling 鏡像(即無(wú) tag 的鏡像)。docker system prune -a命令清理得更加徹底,可以將沒(méi)有容器使用 Docker 鏡像都刪掉。注意,這兩個(gè)命令會(huì)把你暫時(shí)關(guān)閉的容器,以及暫時(shí)沒(méi)有用到的 Docker 鏡像都刪掉了...所以使用之前一定要想清楚吶。

執(zhí)行docker system prune -a命令之后,Docker 占用的磁盤空間減少了很多:

docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              10                  10                  2.271GB             630.7MB (27%)
Containers          10                  10                  2.211MB             0B (0%)
Local Volumes       3                   3                   1.421GB             0B (0%)
Build Cache                                                 0B                  0B
2. 手動(dòng)清理 Docker 鏡像/容器/數(shù)據(jù)卷

對(duì)于舊版的 Docker(版本 1.13 之前),是沒(méi)有 docker system 命令的,因此需要進(jìn)行手動(dòng)清理。這里給出幾個(gè)常用的命
刪除所有關(guān)閉的容器

docker ps -a | grep Exit | cut -d " " -f 1 | xargs docker rm

刪除所有 dangling 鏡像(即無(wú) tag 的鏡像):

docker rmi $(docker images | grep "^" | awk "{print $3}")

刪除所有 dangling 數(shù)據(jù)卷(即無(wú)用的 volume):

docker volume rm $(docker volume ls -qf dangling=true)

Fundebug提供實(shí)時(shí)、專業(yè)的錯(cuò)誤監(jiān)控服務(wù),為您的線上代碼保駕護(hù)航,歡迎大家免費(fèi)使用!

3. 限制容器的日志大小

有一次,當(dāng)我使用 1 與 2 提到的方法清理磁盤之后,發(fā)現(xiàn)并沒(méi)有什么作用,于是,我進(jìn)行了一系列分析。

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

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

Docker 竟然使用了將近100GB磁盤,這也是夠了。使用du命令繼續(xù)查看,可以定位到真正占用這么多磁盤的目錄:

92G    /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53

docker ps可知,nginx 容器的 ID 恰好為a376aa694b22,與上面的目錄/var/lib/docker/containers/a376aa694b22的前綴一致:

docker ps
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
a376aa694b22        192.168.59.224:5000/nginx:1.12.1            "nginx -g "daemon off"   9 weeks ago         Up 10 minutes                           nginx

因此,nginx 容器竟然占用了92GB的磁盤。進(jìn)一步分析可知,真正占用磁盤空間的是 nginx 的日志文件。那么這就不難理解了。我們Fundebug每天的數(shù)據(jù)請(qǐng)求為百萬(wàn)級(jí)別,那么日志數(shù)據(jù)自然非常大。

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

truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

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

nginx:
    image: nginx:1.12.1
    restart: always
    logging:
        driver: "json-file"
        options:
            max-size: "5g"

重啟 nginx 容器之后,其日志文件的大小就被限制在5GB,再也不用擔(dān)心了~

4. 重啟 Docker

還有一次,當(dāng)我清理了鏡像、容器以及數(shù)據(jù)卷之后,發(fā)現(xiàn)磁盤空間并沒(méi)有減少。根據(jù)Docker disk usage提到過(guò)的建議,我重啟了 Docker,發(fā)現(xiàn)磁盤使用率從 83%降到了 19%。根據(jù)高手指點(diǎn),這應(yīng)該是與內(nèi)核 3.13 相關(guān)的 BUG,導(dǎo)致 Docker 無(wú)法清理一些無(wú)用目錄:

it"s quite likely that for some reason when those container shutdown, docker couldn"t remove the directory because the shm device was busy. This tends to happen often on 3.13 kernel. You may want to update it to the 4.4 version supported on trusty 14.04.5 LTS.

The reason it disappeared after a restart, is that daemon probably tried and succeeded to clean up left over data from stopped containers.

我查看了一下內(nèi)核版本,發(fā)現(xiàn)真的是 3.13:

uname -r
3.13.0-86-generic

如果你的內(nèi)核版本也是 3.13,而且清理磁盤沒(méi)能成功,不妨重啟一下 Docker。當(dāng)然,這個(gè)晚上操作比較靠譜。

參考

誰(shuí)用光了磁盤?Docker System 命令詳解

INTRODUCING DOCKER 1.13

Docker 文檔:docker system

Docker 文檔:json-file

Docker disk usage

關(guān)于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線上應(yīng)用實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計(jì)處理了10億+錯(cuò)誤事件,付費(fèi)客戶有Google、360、金山軟件、百姓網(wǎng)等眾多品牌企業(yè)。歡迎大家免費(fèi)試用!

版權(quán)聲明

轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27202.html

相關(guān)文章

  • 誰(shuí)用光了磁盤Docker System命令詳解

    摘要:用了一段時(shí)間后,會(huì)發(fā)現(xiàn)它占用了不少硬盤空間。為了避免構(gòu)建鏡像時(shí)使用緩存,我在命令之前添加了一行命令。引入了命令,類似于上的命令,用于查看的磁盤使用情況。這些鏡像占用了超過(guò)磁盤空間。現(xiàn)在,已使用的磁盤空間又變成了。 譯者按: Docker鏡像,容器,數(shù)據(jù)卷以及網(wǎng)絡(luò)都會(huì)占用主機(jī)的磁盤空間,這樣的話,磁盤很容易就會(huì)被用完。這篇博客介紹了一個(gè)簡(jiǎn)單的解決方案 - Docker System命令。...

    mdluo 評(píng)論0 收藏0
  • Docker 腳本化一鍵部署

    摘要:參照官網(wǎng)安裝的時(shí)候,需要安裝等包,但官網(wǎng)給的源是,國(guó)內(nèi)訪問(wèn)不了,此時(shí)我們可以使用阿里云的倉(cāng)庫(kù)鏡像。阿里云上沒(méi)有附說(shuō)明連接,簡(jiǎn)單摸索了下,如下設(shè)置可用。 Docker install Docker 參照官網(wǎng) install kubernetes 安裝kubernetes的時(shí)候,需要安裝kubelet, kubeadm等包,但k8s官網(wǎng)給的yum源是packages.cloud.googl...

    VEIGHTZ 評(píng)論0 收藏0
  • Docker鏡像倉(cāng)庫(kù)清理探索之路

    摘要:若要開啟刪除鏡像功能,需要修改鏡像倉(cāng)庫(kù)的配置文件。一個(gè)可行的解決辦法是手動(dòng)更改鏡像倉(cāng)庫(kù)的配置,暫時(shí)禁止鏡像的操作。 用友云開發(fā)者中心是基于Docker容器進(jìn)行微服務(wù)架構(gòu)應(yīng)用的落地與管理。相信各位同學(xué)在使用的過(guò)程中,會(huì)發(fā)現(xiàn)隨著Docker鏡像的增多,占用磁盤空間也約來(lái)越多。這時(shí)我們需要清理私有鏡像倉(cāng)庫(kù)中不需要的鏡像。但在實(shí)際操作時(shí),才會(huì)發(fā)現(xiàn)這本以為很簡(jiǎn)單的任務(wù)中卻暗藏玄機(jī),遇到了不少的麻...

    JouyPub 評(píng)論0 收藏0
  • 如何優(yōu)化Docker儲(chǔ)存

    摘要:修改配置文件在的配置文件最后一行的末尾添加,添加完之后的配置為重啟服務(wù)重啟的命令如下。修改后的結(jié)果如下啟動(dòng)服務(wù)刪除源文件以上就是儲(chǔ)存的優(yōu)化方案,希望對(duì)您能夠有所幫助,更好的使用容器技術(shù)。 各位同學(xué),大家在使用Docker的過(guò)程中,有沒(méi)有想過(guò),Docker在本地存儲(chǔ)鏡像時(shí)把文件存儲(chǔ)在哪里了呢?有沒(méi)有對(duì)文件的總大小做一定的限制呢?能不能調(diào)整本地存儲(chǔ)的位置及總限制大小呢?今天,我們就從這些問(wèn)...

    Amio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<