Docker主机安全 – 容器是否可以运行危险的代码或从容器内改变主机?

比方说,我从一个集线器仓库中拉出一个新的图像,并运行它,而无需查看dockerfile的内容。 容器或图像能否以任何方式影响我的主机?

请让我知道,因为我将运行我的服务器上用户input的图像名称的图像列表。 我担心,如果它会影响服务器/主机。

默认执行一个图像,答案是一个有条件的号码。 内核function有限,文件系统受到限制,进程空间被隔离,并且与主机位于一个单独的桥接networking中。 任何允许访问主机的东西都是一个安全漏洞。

有条件的部分是,它可以用尽你所有的CPU周期,它可以耗尽你的内存,它可以填满你的驱动器,它可以发送networkingstream量从你的机器NAT'ed你的IP地址。 换句话说,默认情况下,没有任何东西可以阻止容器对主机进行DoS攻击。

Docker确实有能力限制许多这些东西,包括限制内存,限制CPU或优先级进程,还有文件系统的配额解决scheme。

您也可以走向另一个方向,将主机暴露给容器,从而有效地创build安全漏洞。 这将包括安装主机卷,尤其是容器内的--privileged ,通过--privileged删除内核function限制,以及使用--net=host删除networking隔离。 用容器做任何这些都会closures默认情况下Docker提供的保护。