1. 程式人生 > >解決docker WARNING: Usage of loopback devices is strongly discouraged for production use的正確姿勢

解決docker WARNING: Usage of loopback devices is strongly discouraged for production use的正確姿勢

         centos的系統,安裝docker後,如果沒有修改一些設定,啟動docker daemon後,如果在xfs 或者ext4的檔案系統上,命令列輸入docker info命令下,常會看到如下一條警告資訊

          大意是用loopback的方式執行docker是強烈不建議的,後面也告訴瞭解決這個警告的辦法,網上搜索的一些解決辦法,大意也是docker daemon啟動引數加入  DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"來規避警告。而實際這樣無異於掩耳盜鈴,從加入的引數的意思也能看出如此。事實上,根本的解決辦法,要從docker 的不同的儲存驅動說起。

目前docker支援的儲存驅動型別,有aufs,Device mapper,btrfs,overlayfs和zfs,所有驅動都用到寫時複製(CoW)的技術。而出現警告的原因,就是在centos系統上(預設不支援aufs),docker daemon啟動時,找到的後端儲存驅動只有device mapper型別,就會通過loopback的方式,創造100G的sparse檔案,並將其作為device mapper的儲存池,而所有容器都從該儲存池中分配預設10G的儲存空間使用(可以理解為通過dd命令創造一個稀疏檔案,再把這個稀疏的檔案當做塊裝置通過loopback掛載出來)。而loopback的方式,效能和穩定性都不是很好,所以才出現上述警告。因此解決的辦法,也在使用device mapper儲存時,避免使用loopback即可。

在docker daemon啟動時,加入--storage-opt dm.datadev=/dev/xxxx    --storage-opt dm.metadatadev=/dev/xxx   ,為device mapper的元資料儲存和docker的映象資料儲存選擇獨立的塊裝置即可,lvm或者獨立磁碟分割槽都可以。
參考:
        1、

Docker五種儲存驅動原理及應用場景和效能測試對比  http://dockone.io/article/1513?utm_source=tuicool&utm_medium=referral