偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

誰(shuí)用占用了這么多磁盤(pán)空間?Docker System命令詳解

開(kāi)發(fā) 前端
用了一段時(shí)間Docker后,會(huì)發(fā)現(xiàn)它占用了不少硬盤(pán)空間。還好Docker 1.13引入了解決方法,它提供了簡(jiǎn)單的命令來(lái)查看/清理Docker使用的磁盤(pán)空間。

用了一段時(shí)間Docker后,會(huì)發(fā)現(xiàn)它占用了不少硬盤(pán)空間。還好Docker 1.13引入了解決方法,它提供了簡(jiǎn)單的命令來(lái)查看/清理Docker使用的磁盤(pán)空間。

[[216788]]

本文通過(guò)一個(gè)簡(jiǎn)單的示例,可以證明Docker能夠很快地將磁盤(pán)占滿。該示例通過(guò)play-with-docker.com運(yùn)行。點(diǎn)擊Add new instance即可創(chuàng)建新的實(shí)例,該實(shí)例安裝了***版的Docker 17.03。這篇博客主要討論磁盤(pán)空間,那么不妨使用df命令查看磁盤(pán)的初始狀態(tài):

 

  1. $ df -h 
  2. Filesystem           Size       Used Available Use% Mounted on 
  3. /dev/mapper/...      10.0G    443.3M      9.6G   4% / 
  4. tmpfs                60.0G         0     60.0G   0% /dev 
  5. tmpfs                60.0G         0     60.0G   0% /sys/fs/cgroup 
  6. /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/resolv.conf 
  7. /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/hostname 
  8. /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/hosts 
  9. shm                  64.0M         0     64.0M   0% /dev/shm 
  10. /dev/mapper/...      10.0G    443.3M      9.6G   4% /graph/overlay2 

可知,在新創(chuàng)建的play-with-docker.com實(shí)例,一共有10GB磁盤(pán)空間,其中接近500MB已被占用。

接下來(lái)編寫(xiě)Dockerfile來(lái)創(chuàng)建一個(gè)鏡像。這個(gè)鏡像基于Alpine鏡像;鏡像將寫(xiě)入3個(gè)隨機(jī)的文件,每個(gè)文件1GB,文件由dd命令生成;因?yàn)檫@個(gè)鏡像并沒(méi)有實(shí)際作用,因此CMD設(shè)為/bin/true。

 

  1. FROM alpine 
  2. RUN dd if=/dev/zero of=1g1.img bs=1G count=1 
  3. RUN dd if=/dev/zero of=1g2.img bs=1G count=1 
  4. RUN dd if=/dev/zero of=1g3.img bs=1G count=1 
  5. CMD /bin/true 

運(yùn)行docker build -t test .即可創(chuàng)建鏡像,執(zhí)行完成后將生成一個(gè)3GB的鏡像。

 

  1. $ docker image ls 
  2. REPOSITORY          TAG                CREATED             SIZE 
  3. test                latest             38 seconds ago      3.23GB 
  4. alpine              latest             5 weeks ago         3.99MB 

不難理解,該鏡像占用了相應(yīng)大小的磁盤(pán)空間。

 

  1. $ df -h 
  2. Filesystem        Size       Used Available Use% Mounted on 
  3. /dev/mapper/...   10.0G      3.4G      6.5G  34% / 

若只寫(xiě)入2個(gè)隨機(jī)文件,則需要修改Dockerfile,刪掉一行。為了避免構(gòu)建鏡像時(shí)使用緩存,我在dd命令之前添加了一行echo命令。

 

  1. FROM alpine 
  2. RUN echo foo 
  3. RUN dd if=/dev/zero of=1g1.img bs=1G count=1 
  4. RUN dd if=/dev/zero of=1g2.img bs=1G count=1 
  5. # RUN dd if=/dev/zero of=1g3.img bs=1G count=1 
  6. CMD /bin/true 

本來(lái)以為這樣可以節(jié)省1GB磁盤(pán)空間,然而實(shí)際情況更加糟糕!

 

  1. $ df -h 
  2. Filesystem        Size       Used Available Use% Mounted on 
  3. /dev/mapper/...   10.0G      5.4G      4.5G  54% / 

舊的Docker鏡像一直存在,最終磁盤(pán)空間會(huì)很快被用完。Docker 1.13引入了docker system df命令,類(lèi)似于Linux上的df命令,用于查看Docker的磁盤(pán)使用情況。

 

  1. $ docker system df 
  2. TYPE                TOTAL     ACTIVE    SIZE          RECLAIMABLE 
  3. Images              3         0         5.373GB       5.373GB (100%) 
  4. Containers          0         0         0B            0B 
  5. Local Volumes       0         0         0B            0B 

可知,實(shí)例上一共有3個(gè)Docker鏡像: apline鏡像,包含3個(gè)1GB隨機(jī)文件的鏡像以及包含2個(gè)1GB隨機(jī)文件的鏡像。這些鏡像占用了超過(guò)5GB磁盤(pán)空間。由于我們并沒(méi)有基于這些鏡像運(yùn)行容器,所以它們都可以被刪除,所以可回收的(RECLAIMABLE)磁盤(pán)空間為100%。使用docker run test運(yùn)行test鏡像再查看:

  1. $ docker system df 
  2. TYPE                TOTAL     ACTIVE    SIZE          RECLAIMABLE 
  3. Images              3         1         5.373GB       3.225GB (60%) 
  4. Containers          1         0         0B            0B 
  5. Local Volumes       0         0         0B            0B 

現(xiàn)在情況就不同了,我運(yùn)行了一個(gè)容器,它執(zhí)行/bin/true之后就很快退出了。

這個(gè)容器綁定了test鏡像,test鏡像被標(biāo)記為活躍(active)因而不能被刪除,這導(dǎo)致可回收的磁盤(pán)空間變少了。

現(xiàn)在來(lái)清理一下磁盤(pán)空間。

Docker提供了docker system prune,可以用于清理dangling鏡像(參考What are Docker : images?)和容器,以及失效的數(shù)據(jù)卷和網(wǎng)絡(luò)。

 

  1. $ docker system prune 
  2. WARNING! This will remove: 
  3.         - all stopped containers 
  4.         - all volumes not used by at least one container 
  5.         - all networks not used by at least one container 
  6.         - all dangling images 
  7. Are you sure you want to continue? [y/N] y 
  8. Deleted Containers: 
  9. 1cdf866157b4a97e151125af3c2a7f186a59b6f63807e2014ce1a00d68f44e1d 
  10. Deleted Images: 
  11. deleted: sha256:f59bb277... 
  12. deleted: sha256:695b8e70... 
  13. deleted: sha256:93b1cceb... 
  14. deleted: sha256:c74d6bcd... 
  15. deleted: sha256:df8b9bb1... 
  16. deleted: sha256:dfe8340f... 
  17. deleted: sha256:ce1ee654... 
  18. Total reclaimed space: 3.221GB 

根據(jù)警告信息可知,這個(gè)命令會(huì)刪除所有關(guān)閉的容器以及dangling鏡像。示例中,含有3個(gè)1GB隨機(jī)文件的鏡像的名稱(chēng)被占用了,名稱(chēng)為:,為dangling鏡像,因此會(huì)被刪除。同時(shí),所有的中間鏡像也會(huì)被刪除。這樣的話,一共3GB的磁盤(pán)空間被回收了!

更進(jìn)一步,使用-a選項(xiàng)可以做深度清理。這時(shí)我們會(huì)看到更加嚴(yán)重的WARNING信息:

 

  1. $ docker system prune -a 
  2. WARNING! This will remove: 
  3.         - all stopped containers 
  4.         - all volumes not used by at least one container 
  5.         - all networks not used by at least one container 
  6.         - all images without at least one container associated to them 
  7. Are you sure you want to continue? [y/N] y 
  8. Deleted Images: 
  9. untagged: test:latest 
  10. deleted: sha256:c515ebfa2... 
  11. deleted: sha256:07302c011... 
  12. deleted: sha256:37c0c6474... 
  13. deleted: sha256:5cc2b6bc4... 
  14. deleted: sha256:b283b9c35... 
  15. deleted: sha256:8a8b9bd8b... 
  16. untagged: alpine:latest 
  17. untagged: alpine@sha256:58e1a1bb75db1... 
  18. deleted: sha256:4a415e366... 
  19. deleted: sha256:23b9c7b43... 
  20. Total reclaimed space: 2.151GB 

這個(gè)命令將清理整個(gè)系統(tǒng),并且只會(huì)保留真正在使用的鏡像,容器,數(shù)據(jù)卷以及網(wǎng)絡(luò),因此需要格外謹(jǐn)慎。比如,我們不能在生產(chǎn)環(huán)境中運(yùn)行prune -a命令,因?yàn)橐恍﹤溆苗R像(用于備份,回滾等)有時(shí)候需要用到,如果這些鏡像被刪除了,則運(yùn)行容器時(shí)需要重新下載。

此時(shí),所有未綁定容器的鏡像將會(huì)被刪除。由于***次prune命令刪除了所有容器,因此所有鏡像(它們沒(méi)有綁定任何容器)都會(huì)被刪除。

 

  1. $ df -h 
  2. Filesystem          Size      Used Available Use% Mounted on 
  3. /dev/mapper/...    10.0G    442.5M      9.6G   4% / 

現(xiàn)在,已使用的磁盤(pán)空間又變成了4%。本文的示例只是冰山一角,因?yàn)橐坏┪覀冞\(yùn)行了真正的容器,并且使用了Docker數(shù)據(jù)卷和Docker網(wǎng)絡(luò),則磁盤(pán)空間將會(huì)更快用完。感興趣的話,可以查看博客***的視頻(不要忘了訂閱!)。在視頻中,我介紹一個(gè)簡(jiǎn)單的WordPress應(yīng)用,它由數(shù)個(gè)容器,數(shù)據(jù)卷以及網(wǎng)絡(luò)構(gòu)成。這個(gè)應(yīng)用可以很快地消耗掉磁盤(pán)空間,我將介紹如何處理這個(gè)問(wèn)題。

責(zé)任編輯:未麗燕 來(lái)源: 代碼灣
相關(guān)推薦

2023-11-13 08:49:54

2021-07-30 16:28:42

磁盤(pán)微信工具

2010-05-27 17:51:55

Linux查看磁盤(pán)空間

2018-06-26 15:00:24

Docker安全風(fēng)險(xiǎn)

2021-02-11 08:11:50

Window10Docker容器

2015-11-25 13:37:52

磁盤(pán)空間LinuxUbuntu

2010-04-08 15:24:36

Windows磁盤(pán)空間

2021-08-30 07:53:54

Linuxncdu磁盤(pán)

2021-03-05 08:29:20

DeleteMysql數(shù)據(jù)結(jié)構(gòu)

2024-06-04 09:36:37

2017-08-11 14:21:33

軟件開(kāi)發(fā)前端框架

2023-07-17 08:21:52

漏洞版本項(xiàng)目

2024-04-02 08:41:10

ArrayListSubList場(chǎng)景

2009-11-30 17:20:32

LINUX虛擬機(jī)磁盤(pán)

2011-01-18 10:25:19

Linux磁盤(pán)分區(qū)

2022-06-28 07:14:23

WizTree磁盤(pán)文件清理

2025-06-25 08:25:00

運(yùn)維lsof幽靈文件

2023-04-18 23:31:59

Linux磁盤(pán)系統(tǒng)

2021-08-04 12:09:04

Linuxdf命令

2020-12-03 06:18:04

磁盤(pán)Docker容器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)