docker 的新手,是否可以保护我的源代码并添加权限?
New to docker, is it possible to protect my source code and add permissions?
我有兴趣使用 Docker 来托管我在工作中帮助开发的项目。但是我对它的适用性有几个疑问。
首先,我想知道是否有可能对潜在的 users/customers 隐藏源代码?显然 Docker 的政策的一部分是代码是开放的,但是除了指定的 users/developers 之外,是否有任何方法可以添加权限来锁定任何代码?
其次,就我们正在开发的产品而言——某些用户可能希望只访问产品的一个方面。我们有什么办法可以向 docker 注册表添加权限,以便客户只能访问他们请求的内容吗?
Docker 不 "host a project":它提供了指定执行环境(Docker文件和 docker 构建)和 运行 它的可能性.
"source"(Docker文件和项目源等资源)根本不需要可用:只有内置的 image一定要有才能docker运行它。
该图像可以存储在私有注册表中(docker 发行版),它不会包含您项目的源代码,而只包含从这些源构建并由 Docker文件指令。
certain users may wish to access only one aspect of the product.
一个简单的解决方案是:
- 多张图片(每张图片都安装了您产品的某个方面)
- 几个 docker 图片注册中心(每个注册中心仅供您的特定客户群访问,并且仅包括相关图片)
不确定 OP 是否需要这个,但根据查询的上下文,VonC 的答案可能不完整:
如果项目有可以共享的可交付成果,这些成果与项目的源代码是分开的,那么您确实可以按照建议去做。
例如,您使用设置系统的 Dockerfile 制作图像,获取源代码,将项目编译为可交付成果并删除源代码(或在其他地方编译并复制)。这是构建此软件包并将其发布给您的客户的一种好方法,而且很省钱。这就是@VonC 在他的回答中提出的建议。
我想补充一点,例如,如果您正在查看一个 Web 系统,其中的代码很难与可交付成果分开,这将很棘手。这可能是在像 HTML/PHP 之类的网络系统的情况下。
事实是,最终图像将与客户端服务器相同。无论哪种方式,它都是完全可访问的,并且上面的所有内容都是可读的。因此,虽然如果不需要,您根本不必在系统上保留源代码和您的秘密,但您不能使用 docker 作为一种打包方法来提供隐藏源代码的独立系统。
因此您不能将任何人从图像中拒之门外;您唯一可以做的就是确保在最终图像上不提供项目编译所需的任何内容。如果编译后不需要 'secret' 东西,这只是一个解决方案。
我有兴趣使用 Docker 来托管我在工作中帮助开发的项目。但是我对它的适用性有几个疑问。
首先,我想知道是否有可能对潜在的 users/customers 隐藏源代码?显然 Docker 的政策的一部分是代码是开放的,但是除了指定的 users/developers 之外,是否有任何方法可以添加权限来锁定任何代码?
其次,就我们正在开发的产品而言——某些用户可能希望只访问产品的一个方面。我们有什么办法可以向 docker 注册表添加权限,以便客户只能访问他们请求的内容吗?
Docker 不 "host a project":它提供了指定执行环境(Docker文件和 docker 构建)和 运行 它的可能性.
"source"(Docker文件和项目源等资源)根本不需要可用:只有内置的 image一定要有才能docker运行它。
该图像可以存储在私有注册表中(docker 发行版),它不会包含您项目的源代码,而只包含从这些源构建并由 Docker文件指令。
certain users may wish to access only one aspect of the product.
一个简单的解决方案是:
- 多张图片(每张图片都安装了您产品的某个方面)
- 几个 docker 图片注册中心(每个注册中心仅供您的特定客户群访问,并且仅包括相关图片)
不确定 OP 是否需要这个,但根据查询的上下文,VonC 的答案可能不完整:
如果项目有可以共享的可交付成果,这些成果与项目的源代码是分开的,那么您确实可以按照建议去做。 例如,您使用设置系统的 Dockerfile 制作图像,获取源代码,将项目编译为可交付成果并删除源代码(或在其他地方编译并复制)。这是构建此软件包并将其发布给您的客户的一种好方法,而且很省钱。这就是@VonC 在他的回答中提出的建议。
我想补充一点,例如,如果您正在查看一个 Web 系统,其中的代码很难与可交付成果分开,这将很棘手。这可能是在像 HTML/PHP 之类的网络系统的情况下。
事实是,最终图像将与客户端服务器相同。无论哪种方式,它都是完全可访问的,并且上面的所有内容都是可读的。因此,虽然如果不需要,您根本不必在系统上保留源代码和您的秘密,但您不能使用 docker 作为一种打包方法来提供隐藏源代码的独立系统。
因此您不能将任何人从图像中拒之门外;您唯一可以做的就是确保在最终图像上不提供项目编译所需的任何内容。如果编译后不需要 'secret' 东西,这只是一个解决方案。