最近在使用docker的時候,發現啟動非常慢,經過一番調查研究,總結了以下幾點,希望對大家有所幫助。
首先,我們需要弄清楚docker啟動時需要做些什么。
$ dockerd
以上命令將啟動Docker守護程序。Docker守護程序需要加載內核模塊、初始化網絡、配置存儲驅動程序、讀取Docker配置文件、啟動容器管理器等步驟。如果你的服務器上有很多鏡像和容器,它還要做更多的工作。
一般而言,Docker守護程序的初始化時間應該在10秒鐘以內。如果它需要更長的時間則說明需要做一些優化工作。以下是幾個值得我們關注的優化策略:
1. 優化存儲驅動
$ sudo dockerd \ --storage-driver devicemapper \ --storage-opt dm.basesize=20G \ --storage-opt dm.thinpooldev=/dev/mapper/docker-thinpool \ --storage-opt dm.use_deferred_removal=true \ --storage-opt dm.use_deferred_deletion=true
這段命令可以優化使用devicemapper存儲驅動的docker守護程序。我們可以設置之前沒有設置過的選項,比如dm.use_deferred_removal和 dm.use_deferred_deletion。它們可以幫助docker更快地回收資源。
2. 清理日志
$ sudo journalctl --vacuum-time=2d
上面的命令可以刪除2天前的系統日志。這樣可以保證日志不會過多撐滿硬盤空間,減少啟動時的I/O負擔,從而提升啟動速度。
3. 修改默認日志等級
# /etc/docker/daemon.json { "log-opts": { "max-size": "50m", "max-file": "3", "mode": "non-blocking" } }
上面的配置文件可以修改日志的默認等級。我們可以設置日志級別為non-blocking,這可以讓docker不阻塞等待日志寫入完成,從而提高啟動速度。
總之,優化docker啟動速度需要我們全面、系統地考慮到各個因素,包括驅動、存儲、日志、系統設置等等。只有從多個方面入手,才能夠真正讓docker快速啟動,并能夠快速地處理我們的業務需求。