我想在Docker容器內安全地運行任意應用程序,就像在vm中一樣。爲此,我在主機系統的一個目錄中保存應用程序(我已經從Web上下載並且我不信任該應用程序),並創建一個將此目錄映射到容器的主目錄的卷,然後運行應用程序在容器內。這種方法是否存在安全問題?是否有更好的解決方案來完成相同的任務?如何在Docker中安全地運行應用程序
此外,爲了安裝所有必要的依賴項,我讓在容器內運行的bash終端中執行任意腳本:這可能會很危險嗎?
我想在Docker容器內安全地運行任意應用程序,就像在vm中一樣。爲此,我在主機系統的一個目錄中保存應用程序(我已經從Web上下載並且我不信任該應用程序),並創建一個將此目錄映射到容器的主目錄的卷,然後運行應用程序在容器內。這種方法是否存在安全問題?是否有更好的解決方案來完成相同的任務?如何在Docker中安全地運行應用程序
此外,爲了安裝所有必要的依賴項,我讓在容器內運行的bash終端中執行任意腳本:這可能會很危險嗎?
只要你不給應用程序sudo訪問你應該很好地嘗試一下。
依賴關係更好地在Dockerfile中以明確的方式定義在其他人看到的位置。選擇運行腳本代替也可以完成這項工作,但這樣做更不方便。
我讀了用戶Dockerfile更好,但爲什麼?只是因爲你可以多次重建相同的圖像,或者有更具體的原因? (據你所知) – SimoV8
如果應用程序在沒有sudo的情況下使用Docker啓動的容器內的sudo訪問(假設是一個ubuntu鏡像),是否危險? – SimoV8
爲了您的第一條評論,據我所知,它更多的是關於常規做法,構建自動化,可重用性(使用另一個構建Dockerfile)。 對於第二個評論,我沒有深入瞭解碼頭安全問題,但我不會建議在其中運行sudo。我試圖搜索它,因爲它也達到了我的興趣。一個有用的2部分文章,您可以在最初閱讀[這裏](http://opensource.com/business/14/7/docker-security-selinux) –
添加到@Dimitris答案。還有其他的事情你需要考慮。 有些東西容器不包含。 Docker使用命名空間來改變系統的進程視圖。例如,N/W共享內存等。但是您必須記住它不像KVM。不像KVM(VMS)/ proc/sys那樣,Docker直接與內核進行通信。
因此,如果任意應用程序嘗試訪問Cgroups,/ proc/sys,/ proc/bus等內核子系統,您可能會遇到麻煩。除非是多租戶系統,否則我會說它很好。
好的, docker直接與內核通信,但其中的應用程序不應該能夠訪問像/ proc/sys這樣的主機資源和目錄,對吧?我想要做的是一個多用戶系統,每個用戶都可以在自己的容器內做任何他想做的事情,但我不想讓他與其他用戶或主機系統交互(並打擾)。那可能嗎? – SimoV8
我投票結束這個問題作爲題外話,因爲他的問題似乎更適合http://unix.stackexchange.com/或http://security.stackexchange.com/給我。另一方面, –
似乎有更多的人對這裏的docker有所瞭解(在unix.stackexchange.com上只有[100個問題](http://unix.stackexchange.com/questions/tagged/docker)),[10個問題] (http://security.stackexchange.com/questions/tagged/docker)在security.stackexchange.com,在[5900問題](http://stackoverflow.com/questions/new/docker)在這裏) – Thomasleveil