我以前曾经想过这个问题,但是我做了很多Googlesearch,找不到一个简单的答案,所以很抱歉,如果这已经被回答。
从本质上讲,我打算提供一个服务,允许用户在我的docker主机上运行docker集装箱。 用户可以select我提供的一个容器或提供他们自己的(未经审计的)。 他们也可以在自己的容器中运行自己select的bash命令。 我需要限制他们在其容器内运行代码,无法访问主机或任何其他并发运行的容器。 应该允许容器完全访问互联网,主机需要与容器共享一个目录。 我将最初提供一些数据文件到docker容器,一旦容器完成了用户想要的任务,我将需要再次访问数据文件。
从安全的angular度来看,我需要注意些什么? 谢谢你的帮助。
在Docker中运行容器的默认CLI应该在容器命令的上下文中是安全的。
你需要注意的是传递给该命令的任何选项。 如果用户有权访问Docker CLI本身,他们可以控制主机(例如, docker run -v /:/target debian /bin/bash将使root shell可以访问/ target上的主机文件系统,在那里它们可以修改/ etc / passwd或机器上的其他文件)。
容器唯一不能默认阻止的是DoS攻击,其中容器可以叉住你的服务器。 为此,您需要查看可作为运行命令一部分添加的内存和cpu限制。