如何加载泊坞窗图像或源代码泊坞窗图像?

说我有一个docker的形象,我部署在一些服务器上。 但我不希望其他用户访问此图像。 有没有一个好的方法来encryptiondocker的形象?

实际上不是,如果用户有权限运行docker守护进程,那么他们将有权访问所有镜像 – 这是由于docker为了运行而需要提升的权限。

请参阅docker安全指南的摘录以获取更多信息。

Docker守护进程攻击面

使用Docker运行容器(和应用程序)意味着运行Docker守护进程。 这个守护进程当前需要root权限,因此你应该知道一些重要的细节。

首先,只有受信任的用户才能被允许控制你的Docker守护进程。 这是一些强大的Dockerfunction的直接结果。 具体来说,Docker允许您在Docker主机和访客容器之间共享一个目录; 它允许你这样做而不限制容器的访问权限。 这意味着您可以启动一个容器,其中/ host目录将成为主机上的/目录; 容器将能够不受任何限制地改变你的主机文件系统。 这与虚拟化系统如何允许文件系统资源共享相似。 没有什么能阻止你与虚拟机共享你的根文件系统(甚至你的根块设备)。

这具有很强的安全意义:例如,如果您通过Web服务器testingDocker以通过APIconfiguration容器,则应该比平时更加​​仔细地进行参数检查,以确保恶意用户无法传递制作的参数,从而导致Docker创build任意容器。

因此,在Docker 0.5.2中,REST API端点(由Docker CLI用来与Docker守护进程通信)发生了变化,现在使用UNIX套接字而不是127.0.0.1上绑定的TCP套接字(后者容易发生如果您碰巧在本地机器上直接运行Docker,则不需要跨站点请求伪造攻击)。 然后可以使用传统的UNIX权限检查来限制对控制套接字的访问。

如果您明确决定,也可以通过HTTP公开REST API。 但是,如果你这样做,意识到上面提到的安全隐含,你应该确保它只能从可信networking或VPN访问; 或者使用例如stunnel和客户端SSL证书进行保护。 您还可以使用HTTPS和证书保护他们。

守护进程也可能容易受到其他input的影响,例如从具有“docker load”的磁盘或从具有“docker pull”的networking加载映像。 这是社区改善的一个重点,特别是“拉”安全。 虽然这些重叠,但应该指出,“docker加载”是一种备份和恢复机制,目前不被视为加载图像的安全机制。 从Docker 1.3.2开始,图像现在在Linux / Unix平台的chrootedsubprocess中被提取出来,成为更广泛的特权分离工作的第一步。

最终,预计Docker守护进程将运行受限制的特权,委托经过充分审计的subprocess,每个subprocess都有自己的(非常有限的)Linux能力范围,虚拟networking设置,文件系统pipe理等。也就是说, ,Docker引擎本身的部分将在容器中运行。

最后,如果您在服务器上运行Docker,则build议在服务器中独立运行Docker,并将所有其他服务移动到由Docker控制的容器中。 当然,保留你最喜欢的pipe理工具(可能至less是一个SSH服务器)以及现有的监视/监督过程(例如NRPE,collectd等)是很好的。