把設(shè)備分享給每個(gè)Docker Container
本文分析如何把設(shè)備分享給每個(gè)Docker Container使用。
假設(shè)我有一個(gè)設(shè)備,通過(guò)/dev/my_device進(jìn)行訪問(wèn),現(xiàn)在我啟動(dòng)一個(gè)Docker container,需要訪問(wèn)這個(gè)設(shè)備,最簡(jiǎn)單的方法是:docker run -ti -v /dev/my_device:/dev/my_device myimage:latest /bin/bash
這意味著,docker中訪問(wèn)設(shè)備和在Host機(jī)上幾乎沒(méi)有區(qū)別。這個(gè)很容易通過(guò)/dev/pts/n進(jìn)行驗(yàn)證:開(kāi)一個(gè)控制臺(tái)(通過(guò)screen,tmux,或者ssh都可以),用ps看看控制臺(tái)的名稱(chēng),然后在Docker中暴露這個(gè)控制臺(tái),往里寫(xiě)相關(guān)的數(shù)據(jù),你就可以從所開(kāi)的控制臺(tái)中拿到數(shù)據(jù)了。
但也有不少細(xì)節(jié)問(wèn)題需要考量的:
第一,docker的用戶不一定有權(quán)限訪問(wèn)那個(gè)設(shè)備,docker中的root不一定具有Host的root權(quán)限。這個(gè)是運(yùn)行docker的管理員自己需要解決的問(wèn)題。
第二,每個(gè)Linux系統(tǒng),無(wú)論是Host還是Guest,都認(rèn)為自己獨(dú)占設(shè)備的,所以管理員要不保證這個(gè)設(shè)備可以被多個(gè)用戶使用,要不要保證這個(gè)設(shè)備只會(huì)分配給獨(dú)立的使用者。或者也有人通過(guò)sr-iov,把設(shè)備分解為多個(gè)VF,供不同docker來(lái)使用:http://jason.digitalinertia.net/exposing-docker-containers-with-sr-iov/
第三,對(duì)于動(dòng)態(tài)設(shè)備,需要有特殊的考量。比如我在docker中通過(guò)vfio創(chuàng)建了一個(gè)vfio_group對(duì)象,這個(gè)對(duì)象是新加出來(lái)的,如果用上面的預(yù)定義方法,在我的docker中就看不見(jiàn)。一種從權(quán)的做法是直接用-v /dev:/dev把整個(gè)/dev目錄共享到Docker中(或者限制性更強(qiáng)一點(diǎn),僅僅共享vfio目錄),但可能不是每個(gè)人都能接受這樣來(lái)使用docker——但我也沒(méi)有更好的辦法:)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。