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