最近在使用Docker容器的過程中,發現一個非常嚴重的問題,就是Docker句柄不停增加。
$ docker info | grep "Docker Root Dir" Docker Root Dir: /var/lib/docker $ sudo ls /proc/$(pidof dockerd)/fd | wc -l 52688
我們可以使用以上兩個命令查看Docker的根目錄以及Docker進程下打開文件的數量,可以看到,當前Docker進程下打開文件的數目已經達到了52688個,這是非常危險的。
一開始,我以為這是一個由Docker版本問題導致的,于是我升級了Docker的版本,但是問題依然存在。
后來我找到了問題的根源,原來是由于我使用了Docker Volume,并且在容器內部不停寫入文件,這導致了Docker句柄的不斷增加。
$ sudo lsof | grep deleted | grep "/var/lib/docker/containers" | wc -l 36284
我們可以使用以上命令查看當前打開的已經被刪除的Docker容器,我們可以看到已經打開了36284個已經被刪除的Docker容器。
最后,我通過設置Docker Volume的權限,以及及時清理已刪除的Docker容器,解決了Docker句柄不停增加的問題。