1. 程式人生 > >Docker鏡像導致centos-root根分區容量爆滿

Docker鏡像導致centos-root根分區容量爆滿

awk log 分區表 磁盤 所有 之前 mage 結果 color

當虛擬機服務器運行Docker久了後,發現Docker的文件越來越大,某天發現此臺機上的數據庫訪問不了了,再重啟數據庫等日誌,提示空間不足,查看磁盤空間:

技術分享圖片

  root分區滿載啊,前段時間還有不少空間的,查下什麽大文件內容占了空間。

find / -xdev -size +100M -exec ls -l {} \;

技術分享圖片

最近用的docker越來越大 才導致磁盤滿了。

那下面要麽清理docker,要麽擴展磁盤。

兩步都做吧,先簡單清理docker,或許可以清理一些空間出來。

先 docker images -a 看一下是不是有過多的 <none> 的鏡像了,其中有一部分是這類鏡像。
# 刪除所有未打標簽的鏡像.

docker rmi $(docker images -aq -f "dangling=true")

容器的內容也是在存儲層的。可以 docker ps -a 看一下是不是有很多之前的容器沒有刪掉的,可以 docker rm $(docker ps -aq -f "dangling=true") 來刪除。

垃圾回收

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro spotify/docker-gc

有些容器明明stop了,但是它還是占著某些資源

docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')

使用docker自帶命令先清理一次。

docker system prune -a

技術分享圖片

註意:

這可能會清除掉images,慎用。

再進行了上面對docker處理後,下面對磁盤擴容。

擴展根分區

VMware分配空間

選中虛擬機->虛擬機設置->添加=》硬盤->添加15G,可以看看第一張圖的硬盤1是SCSI(0:0)新加的硬盤2是SCSI(0:1)

先看一下現有磁盤情況:

# fdisk -l
技術分享圖片

對新磁盤進行分區:

# fdisk /dev/sdb

在fdisk的交互模式中,依次輸入:

n  --創建新分區
p  --創建主分區
<回車>  --默認分區編號
<回車>  --默認起始扇區位置。
<回車>  --默認結束扇區位置。
w  --寫入分區表

這樣就把整個磁盤分成了一個區。

再看一下現有磁盤情況:

# fdisk -l

已經多出了一個新分區:

技術分享圖片

將新分區用於擴展/root

先看一下卷分組:

# vgdisplay -v

技術分享圖片

可以看到當前卷分組名為"centos_h32"。

為之前新增的分區創建物理卷:

# pvcreate /dev/sdb1

查看結果:

# pvdisplay

技術分享圖片

擴展卷分組,"centos_h32"是vgdisplay命令查到的卷分組名:

# vgextend centos_h32 /dev/sdb1

提示成功擴展。

技術分享圖片

下面查看一下邏輯卷:

# lvdisplay

技術分享圖片

可以看到/dev/centos_h32/root目前的LV Size是17.47GiB。

下面擴展邏輯卷/dev/centos_h32/root:

# lvextend -L +15G /dev/centos_h32/root

註:+15G是我們新增加的分區大小。

技術分享圖片

擴展後,還要執行一步 將文件系統擴大:

# xfs_growfs /dev/centos_h32/root

擴展完成。

因為安裝CentOS用的xfs分區,所以使用命令xfs_growfs擴展文件系統大小。否則的話使用resize2fs命令。
查看結果:

# df -Th

/root已經擴充到33GiB:

技術分享圖片


Docker鏡像導致centos-root根分區容量爆滿