rancher崩潰,docker磁盤空間爆滿處理辦法

ps出現(xiàn)問題:rancher報(bào)錯(cuò)說磁盤空間有問題:
2018-07-15 13:09:06,195 ERROR [d0f1bcf9-d467-4e5f-9cca-5306e6f49da7:4284] [volume:345->volumeStoragePoolMap:345] [volume.activate->(VolumeActivate)->volumestoragepoolmap.activate] [] [ecutorService-5] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [storage.volume.activate.reply;agent=32]: Error response from daemon: create logs: error looking up volume plugin rabbitmq: plugin "rabbitmq" not found
2018-07-15 13:09:06,196 ERROR [d0f1bcf9-d467-4e5f-9cca-5306e6f49da7:4284] [volume:345] [volume.activate] [] [ecutorService-5] [c.p.e.p.i.DefaultProcessInstanceImpl] Agent error for [storage.volume.activate.reply;agent=32]: Error response from daemon: create logs: error looking up volume plugin rabbitmq: plugin "rabbitmq" not found
遇到報(bào)錯(cuò)信息不要慌首先看到日志進(jìn)行分析,其實(shí)我看到VolumeActivate這個(gè)我就已經(jīng)知道大概磁盤出問題了,于是查看磁盤果然我發(fā)現(xiàn)磁盤被占滿了


df -hl查看磁盤空間

我首先需要確認(rèn)是不是docker占用了:
于是在docker目錄下執(zhí)行命令如圖:

$cd /var/lib
$du   -sh    *
之前的占有

想我開始修復(fù)執(zhí)行命令:

echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
    do
        echo "clean logs : $log"
        cat /dev/null > $log
    done
echo "==================== end clean docker containers logs   ========

在/etc/docker/daemon.json文件修改加上以下:20m是單個(gè)文件大小,3是數(shù)量,就是一個(gè)容器只生成60m的日志

"log-driver":"json-file",
"log-opts":{"max-size":"20m","max-file":"3"}

記得重啟docker:

$systemctl daemon-reload
$systemctl restart docker
之后的占有

之后rancher就運(yùn)行正常了,其實(shí)出現(xiàn)這個(gè)問題是我的鍋,當(dāng)初我沒想到docker占用磁盤這么厲害。
其實(shí)還有一種修復(fù)方法就是遷移docker默認(rèn)目錄,不過比較繁瑣我,我也說一下怎么操作
1、停止docker服務(wù)。
systemctl stop docker; //每個(gè)liunx版本的命令不一樣
2、創(chuàng)建新的docker目錄,執(zhí)行命令df -h,找一個(gè)大的磁盤。我的是放在/home目錄下面,我的/home目錄大小有900G。 我在 /home目錄下面建了 /home/docker/lib目錄,執(zhí)行的命令是:mkdir -p /home/docker/lib
3、遷移/var/lib/docker目錄下面的文件到 /home/docker/lib下面
cp -R /var/lib/docker/* /home/docker/lib/
4、修改docker配置(/etc/systemd/system/docker.service.d/devicemapper.conf),在文件末添加 :
ExecStart=/usr/bin/dockerd --insecure-registry=私服地址 --graph=/home/docker/lib
注意:如果/etc/systemd/system/docker.service.d/devicemapper.conf,這個(gè)路徑找不到的話,就新建,新建之后加入內(nèi)容,沒有私服地址的話就可以去掉”--insecure-registry=私服地址”。
5、重載配置,重啟docker
systemctl daemon-reload;
systemctl restart docker;
systemctl enable docker;
6、啟動(dòng)成功后,確定容器沒問題后刪除/var/lib/docker/目錄中的文件,然后就OK了。

第二種方式比較簡(jiǎn)單創(chuàng)建一個(gè)軟連接:
首先停掉Docker服務(wù):
systemctl restart docker或者service docker stop
然后移動(dòng)整個(gè)/var/lib/docker目錄到目的路徑:
mv /var/lib/docker /prod/docker
ln -s /prod/docker /var/lib/docker
如圖:


這個(gè)軟連接掛載過去了-

這時(shí)候啟動(dòng)Docker時(shí)發(fā)現(xiàn)存儲(chǔ)目錄依舊是/var/lib/docker,但是實(shí)際上是存儲(chǔ)在數(shù)據(jù)盤的,你可以在數(shù)據(jù)盤上看到容量變化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容