docker無法對「硬碟I/O讀寫」進行隔離,但可以對檔案系統、網路(Network)、進程間的通訊、針對權限的使用者和使用者群組、進程內的PID和宿主機的PID、主機名稱與網域名稱等進行隔離。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
Docker可以控制很多資源,目前還不能對「硬碟I/O讀寫」資源進行隔離。
硬碟I/O是指硬碟的輸入和輸出(Input和Output的縮寫)。就是發指令,從磁碟讀取某段磁區的內容。指令一般是通知磁碟開始扇區位置,然後給出需要從這個初始扇區往後讀取的連續扇區個數,同時給出動作是讀,還是寫。
對於磁碟I/O資源來說,考慮的參數是容量和讀寫速度,因此對容器的磁碟限制也應該從這兩個維度出發。目前Docker 支援對磁碟的讀寫速度進行限制,但是並沒有方法能限制容器能使用的磁碟容量(一旦磁碟 mount 到容器裡,容器就能夠使用磁碟的所有容量)。
那麼docker可以將哪些資源隔離?
Docker透過namespace實現了資源隔離,透過cgroups實現了資源限制,透過*寫入時複製機制(copy-on-write)*實現了高效的檔案操作。
namespace可以隔離哪些
一個容器要想與其他容器互不干擾需要能夠做到:
文件系統需要是被隔離的
網路也是需要被隔離的
進程間的通訊也要被隔離
以上是docker不能對什麼進行隔離的詳細內容。更多資訊請關注PHP中文網其他相關文章!