Docker的新功能,是否可以保护我的源代码并添加权限?

时间:2015-11-27 09:08:42

标签: docker user-permissions docker-registry

我有兴趣使用Docker来托管我正在帮助开发工作的项目。但是我对它的适用性有几点疑问。

首先,我想知道是否可以将源代码隐藏在潜在用户/客户之外?显然,Docker的一部分策略是代码是开放的,但有没有办法添加权限来锁定指定用户/开发人员以外的任何一个?

其次,就我们正在开发的产品而言 - 某些用户可能希望仅访问产品的一个方面。有没有什么办法可以为docker注册表添加权限,以便客户只能访问他们要求的内容?

2 个答案:

答案 0 :(得分:3)

不确定OP是否需要这个,但根据任务的上下文,VonC的答案可能不完整:

如果项目具有可以与项目源分开的可交付的可交付成果,那么您确实可以做到建议的内容。 例如,您使用设置系统的Dockerfile创建图像,获取源代码,将项目编译为可交付成果并删除源(或将其编译到其他地方并复制它)。这是构建此软件包并将其发布给客户的一种很好的保存方法。这就是@VonC在答案中提出的建议。

我想补充一点,例如,如果您正在查看一个网络系统,其中代码与交付项有些难以分开,那将是棘手的。这可能是像HTML / PHP等网络系统的情况。

问题是,最终图像与客户端服务器相同。它是这样或那样的,完全可以访问,并且它上面的所有内容都是可读的。因此,如果不需要将系统中的源和秘密保存在系统中,则不能使用docker作为一种包装方法来提供隐藏源的自包含系统。

所以你不能锁定图像中的任何人;你唯一能做的就是确保最终图像上没有任何只需要编译项目的东西。如果编译后不需要“秘密”内容,这只是一个解决方案。

答案 1 :(得分:1)

Docker不“托管项目”:它提供了指定执行环境(Dockerfile和docker build)并运行它的可能性。

“源”(Dockerfile和项目源之类的资源)根本不必提供:只有构建的图像必须在那里才能让docker运行它。 /> 该映像可以存储在私有注册表(docker distribution)中,它不包含项目的源,而只包括从这些源构建的交付(可执行文件),并通过Dockerfile指令安装在映像中。

  

某些用户可能只希望访问该产品的一个方面。

一个简单的解决方案是:

  • 几张图片(每张图片都安装了产品的某个方面)
  • 多个泊坞窗图像注册表(每个只能访问您的客户的某一组,并且仅包含相关图像)