docker目錄遷移及docker日誌自動清理

docker 默認安裝路徑爲/var/lib/docker/,當docker用過一段時間後發現/var/lib/docker/overlay2 佔用很大,就需要清理Docker佔用的磁盤空間,將目錄/var/lib/docker 目錄遷移到較大的磁盤上

查看磁盤使用情況

# du -hs /var/lib/docker/

image.png

查看Docker的磁盤使用情況,docker system df命令,類似於Linux上的df命令,

# docker system df 

image.png

遷移/var/lib/docker目錄

首先需要停止docker服務。

#systemctl stop docker 

創建新的docker目錄,執行命令df -h,找一個大的磁盤。 我在 /home目錄下面建了 /home/docker/lib目錄

#mkdir -pv /home/docker/lib

 遷移/var/lib/docker目錄下面的文件到 /home/docker/lib

#rsync -avz /var/lib/docker /home/docker/lib/

 配置 /etc/systemd/system/docker.service.d/devicemapper.conf。查看 devicemapper.conf 是否存在。如果不存在就新建。

#mkdir -p /etc/systemd/system/docker.service.d/

#vim /etc/systemd/system/docker.service.d/devicemapper.conf

然後在 devicemapper.conf 寫入:(同步的時候把父文件夾一併同步過來,實際上的目錄應在 /home/docker/lib/docker )

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd  --graph=/home/docker/lib/docker

重新加載 docker

#systemctl daemon-reload

#systemctl restart docker

#systemctl enable docker

爲了確認一切順利,運行

#docker info

命令檢查Docker 的根目錄.它將被更改爲 /home/docker/lib/docker

image.png

啓動成功後,再確認之前的鏡像還在

image.png

確定容器沒問題後刪除/var/lib/docker/目錄中的文件


docker日誌的大小增加的很快,我們可以用以下腳本做定期清理.

#vim clear_docker_logs.sh

#!/bin/bash
echo 'input log file  size '$1  
default=20  
if [ -n "$1" ]  
then  
  default=$1
fi

max=`expr 1024 \* $default`  
echo 'current set file size '$max  
for file in ` ls /home/docker/lib/docker/containers/*/*-json.log `  
do  
  #echo $file
  s=`du -k $file |awk '{print $1}'`
 # echo $s
  if [ $s -gt $max ]
  then
   echo 'remove'$file
   truncate -s 0 $file
   echo 'removed'$file
  fi
done

測試腳本

chmod +x clear_docker_logs.sh  
./clear_docker_logs.sh 20

加入crontab 每隔半小時清理日誌 


#crontab -e

 */30 * * * * /bin/sh /data/docker/docker_logs.sh 20 >> /root/mylog.log 2>&1

將執行的結果寫入到指定的日誌中



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章