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

資訊專欄INFORMATION COLUMN

誰用光了磁盤?Docker System命令詳解

mdluo / 1814人閱讀

摘要:用了一段時間后,會發(fā)現(xiàn)它占用了不少硬盤空間。為了避免構(gòu)建鏡像時使用緩存,我在命令之前添加了一行命令。引入了命令,類似于上的命令,用于查看的磁盤使用情況。這些鏡像占用了超過磁盤空間。現(xiàn)在,已使用的磁盤空間又變成了。

譯者按: Docker鏡像,容器,數(shù)據(jù)卷以及網(wǎng)絡(luò)都會占用主機(jī)的磁盤空間,這樣的話,磁盤很容易就會被用完。這篇博客介紹了一個簡單的解決方案 - Docker System命令

原文: What’s eating my disk? Docker System Commands explained

譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

現(xiàn)在情況就不同了,我運(yùn)行了一個容器,它執(zhí)行/bin/true之后就很快退出了。這個容器綁定了test鏡像,test鏡像被標(biāo)記為活躍(active)因而不能被刪除,這導(dǎo)致可回收的磁盤空間變少了。

現(xiàn)在來清理一下磁盤空間。Docker提供了docker system prune,可以用于清理dangling鏡像(參考What are Docker : images?)和容器,以及失效的數(shù)據(jù)卷和網(wǎng)絡(luò)。

$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all volumes not used by at least one container
        - all networks not used by at least one container
        - all dangling images
Are you sure you want to continue? [y/N] y
Deleted Containers:
1cdf866157b4a97e151125af3c2a7f186a59b6f63807e2014ce1a00d68f44e1d
Deleted Images:
deleted: sha256:f59bb277...
deleted: sha256:695b8e70...
deleted: sha256:93b1cceb...
deleted: sha256:c74d6bcd...
deleted: sha256:df8b9bb1...
deleted: sha256:dfe8340f...
deleted: sha256:ce1ee654...
Total reclaimed space: 3.221GB

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

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

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

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

此時,所有未綁定容器的鏡像將會被刪除。由于第一次prune命令刪除了所有容器,因此所有鏡像(它們沒有綁定任何容器)都會被刪除。

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

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

視頻: What"s eating my disk?!Clean up your Docker System

歡迎加入我們Fundebug的Docker技術(shù)交流群: 305097057

版權(quán)聲明:
轉(zhuǎn)載時請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/201...

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

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

相關(guān)文章

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

    摘要:但是,它有一個不大不小的問題,會比較消耗磁盤空間。執(zhí)行命令之后,占用的磁盤空間減少了很多手動清理鏡像容器數(shù)據(jù)卷對于舊版的版本之前,是沒有命令的,因此需要進(jìn)行手動清理。進(jìn)一步分析可知,真正占用磁盤空間的是的日志文件。 摘要:用了 Docker,好處挺多的,但是有一個不大不小的問題,它會一不小心占用太多磁盤,這就意味著我們必須及時清理。 showImg(https://segmentfau...

    myshell 評論0 收藏0
  • MongoDB之compact操作詳解

    摘要:摘要操作步驟很多,但是可以有效減少磁盤使用量。關(guān)于操作,我列了幾個簡單的。操作效果怎么樣減少了接近的磁盤空間,這個大小應(yīng)該與被刪除的文檔數(shù)量有關(guān)。操作步驟由于操作會阻塞的讀寫操作,因此應(yīng)該對每個節(jié)點(diǎn)依次進(jìn)行操作。 摘要: compact操作步驟很多,但是可以有效減少磁盤使用量。 showImg(https://segmentfault.com/img/bV5PFN?w=800&h=45...

    Forelax 評論0 收藏0
  • Docker安全

    摘要:返回結(jié)果發(fā)現(xiàn)禁掉能力后,在容器里就無法改變?nèi)萜鞯乃姓吡恕2僮飨到y(tǒng)中訪問控制安全的發(fā)展早期的操作系統(tǒng)幾乎沒有考慮安全問題,一個用戶可以訪問任何文件或資源,但很快出現(xiàn)了訪問控制機(jī)制來增強(qiáng)安全性,其中主要的訪問控制在今天被稱為自主訪問控制。 整理自《Docker進(jìn)階與實(shí)戰(zhàn)》 Docker的安全性 Docker的安全性主要體現(xiàn)在如下幾個方面: Docker容器的安全性這是指容器是否會危害到...

    CoreDump 評論0 收藏0
  • Docker 腳本化一鍵部署

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

    VEIGHTZ 評論0 收藏0
  • nagios使用nrpe監(jiān)控磁盤遇到的問題

    摘要:通過查看我的磁盤使用情況,并沒有發(fā)現(xiàn)有什么不妥,而且,,看起來也沒有問題哦是不是有問題,于是,但是也不行最終解決的方法這個命令,生效了為什么呢你可以想一下,我今記錄一下我的解決問題的過程。 問題描述 nagios配合nrpe用來監(jiān)控機(jī)器中運(yùn)行項目的具體情況,還包括磁盤、網(wǎng)絡(luò)、負(fù)載均衡和數(shù)據(jù)庫等具體的使用情況; 我遇到的問題: 使用docker-compose替換原來項目,將所有的進(jìn)程...

    szysky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<