docker 參數'--privileged' 的作用
在Docker中,--privileged 參數給予容器內的進程幾乎相同的權限,就像它們在宿主機上一樣。這意味著容器可以訪問宿主機的所有設備,并且可以執行一些通常需要高級權限的操作,例如加載內核模塊。
使用--privileged參數時,容器內的root用戶將擁有與宿主機上的root用戶相同的能力。這包括但不限于:
- 訪問宿主機的所有設備節點(如
/dev下的設備文件)。 - 修改或加載內核模塊。
- 掛載文件系統。
- 訪問宿主機的某些受保護的文件。
這個參數通常用于需要特殊權限才能運行的容器,例如那些需要訪問宿主機特定設備或執行特定系統調用的容器。
然而,使用--privileged也會帶來安全風險,因為它允許容器內的進程執行可能影響宿主機系統的操作。因此,除非絕對必要,否則不建議在生產環境中使用--privileged。例如:如果需要限制顯卡數量的使用,--gpus '"device=0,1"' 此時此參數則不生效了,默認使用了全部顯卡。因為--privileged的優先級更高。
在Docker的后續版本中,推薦使用更細粒度的權限控制來替代--privileged,例如通過--cap-add參數添加特定的Linux能力(capabilities),或者使用用戶命名空間(user namespaces)來限制容器內用戶權限。
例如,如果你只需要容器能夠訪問宿主機的某個設備,你可以使用--device參數來指定設備,而不是給予全部特權。
使用--privileged參數的示例命令如下:
docker run --privileged -d my_image
這將啟動一個名為my_image的容器,并給予它特權。

浙公網安備 33010602011771號