2015-09-03 67 views
0

我想在Docker容器内安全地运行任意应用程序,就像在vm中一样。为此,我在主机系统的一个目录中保存应用程序(我已经从Web上下载并且我不信任该应用程序),并创建一个将此目录映射到容器的主目录的卷,然后运行应用程序在容器内。这种方法是否存在安全问题?是否有更好的解决方案来完成相同的任务?如何在Docker中安全地运行应用程序

此外,为了安装所有必要的依赖项,我让在容器内运行的bash终端中执行任意脚本:这可能会很危险吗?

+1

我投票结束这个问题作为题外话,因为他的问题似乎更适合http://unix.stackexchange.com/或http://security.stackexchange.com/给我。另一方面, –

+2

似乎有更多的人对这里的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

回答

1

只要你不给应用程序sudo访问你应该很好地尝试一下。

依赖关系更好地在Dockerfile中以明确的方式定义在其他人看到的位置。选择运行脚本代替也可以完成这项工作,但这样做更不方便。

+0

我读了用户Dockerfile更好,但为什么?只是因为你可以多次重建相同的图像,或者有更具体的原因? (据你所知) – SimoV8

+0

如果应用程序在没有sudo的情况下使用Docker启动的容器内的sudo访问(假设是一个ubuntu镜像),是否危险? – SimoV8

+0

为了您的第一条评论,据我所知,它更多的是关于常规做法,构建自动化,可重用性(使用另一个构建Dockerfile)。 对于第二个评论,我没有深入了解码头安全问题,但我不会建议在其中运行sudo。我试图搜索它,因为它也达到了我的兴趣。一个有用的2部分文章,您可以在最初阅读[这里](http://opensource.com/business/14/7/docker-security-selinux) –

3

添加到@Dimitris答案。还有其他的事情你需要考虑。 有些东西容器不包含。 Docker使用命名空间来改变系统的进程视图。例如,N/W共享内存等。但是您必须记住它不像KVM。不像KVM(VMS)/ proc/sys那样,Docker直接与内核进行通信。

因此,如果任意应用程序尝试访问Cgroups,/ proc/sys,/ proc/bus等内核子系统,您可能会遇到麻烦。除非是多租户系统,否则我会说它很好。

+0

好的, docker直接与内核通信,但其中的应用程序不应该能够访问像/ proc/sys这样的主机资源和目录,对吧?我想要做的是一个多用户系统,每个用户都可以在自己的容器内做任何他想做的事情,但我不想让他与其他用户或主机系统交互(并打扰)。那可能吗? – SimoV8

相关问题