發表文章

目前顯示的是 6月, 2019的文章

Docker容器日誌查看與清理

1. 問題 docker容器日誌導致主機磁盤空間滿了。 docker logs -f container_name 劈裡啪啦一大堆,很佔用空間,不用的日誌可以清理掉了。  2. 解決方法 2.1 找出Docker容器日誌 在linux上,容器日誌一般存放在 /var/lib/docker/containers/container_id/ 下面,查看各個日誌文件大小的腳本docker_log_size.sh,內容如下: #!/bin/sh echo "======== docker containers logs file size ========" logs=$(find /var/lib/docker/containers/ -name *-json.log) for log in $logs do ls -lh $log done # chmod +x docker_log_size.sh # ./docker_log_size.sh 2.2 清理Docker容器日誌(治標) 如果docker容器正在運行,那麼使用 rm -rf 方式刪除日誌後,通過 df -h 會發現磁盤空間並沒有釋放。 原因是在Linux或者Unix系統中,通過 rm -rf 或者文件管理器刪除文件,將會從文件系統的目錄結構上解除鏈接(unlink)。 如果文件是被打開的(有一個進程正在使用),那麼進程將仍然可以讀取該文件,磁盤空間也一直被佔用。 正確姿勢是 cat /dev/null > *-json.log ,當然你也可以通過 rm -rf 刪除後重啟docker。 接下來,提供一個日誌清理腳本 clean_docker_log.sh ,內容如下: #!/bin/sh echo "======== start clean docker containers logs ========" logs=$(find /var/lib/docker/containers/ -name *-json.log) for log in $logs d