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)磁盤被占滿了

我首先需要確認(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
如圖:

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