如何禁止访问Docker容器内部?


14

我想将我的应用程序以docker映像的形式交付给客户。但是至关重要的是确保最终用户不要更改容器内的任何内容。用户只能运行/停止容器并通过网络与容器交互。

是否可以禁止接触容器内部?是否可以验证该容器制成的图像的完整性?


2
除非您确实管理Docker主机,否则我相信不会。您愿意通过阻止此访问来解决什么问题?
2015年

正如Tensibai所提到的,这取决于。如果出于安全原因需要知道容器未修改,则基本上必须在自己的服务器上运行它。如果您只是想劝阻人们不要修改它,以免他们破坏事物,则可能有一些方法可以做到。描述您的用例将在这里有所帮助。
Aurora0001

Answers:


11

简而言之,您不能阻止客户修改他们在自己的基础架构中运行的容器。容器不像二进制文件那样容易被混淆。它们是运行时环境。但是,您在容器内分发的代码可能会被混淆。

您的问题暗示了第三方支持问题:客户端修改他们在自己的环境中运行的软件。如果您提供操作提供的容器的工具(例如,监视和记录),则客户应同意(作为软件许可的一部分)不要对它们进行未经授权的修改。这适用于所有类型的第三方软件,而不仅仅是容器。

根据您的情况,您还可以选择将应用程序作为在云基础架构中运行的软件即服务(SaaS)提供。

如果您的客户要求您的容器在其基础结构上运行,并且拒绝遵守修改限制,那么您可能不想尝试支持其对软件的使用。


6

Docker没有提供任何方法来阻止用户访问容器,但是作为图像开发人员,您可以遵循一些策略

  • 混淆您的软件(红宝石,python等)
  • 从没有外壳的基本映像以及用户可以用来篡改映像的其他二进制文件构建映像。

当然,他们总是可以出口容器并重新包装,但这是极端的措施。


为什么将Ruby和Python作为混淆代码的示例?这些语言的代码通常作为明文源文件保存在执行的OS中。使用诸如C ++,C#,Java之类的编译语言还是像JS这样可以“最小化”的语言,是不是更可取?
AjaxLeung

5

您可以从泊坞窗组中删除用户,并为sudos docker startdocker stop


3
只有拥有这些服务器,才有可能/有效……
Dan Cornilescu

5

如果您的客户准备投资,那么您应该选择Docker企业版。在Docker EE中,您只有一种工具是UCP(Universal Control Plane) UCP。通过UCP,您可以创建角色和访问权限,并限制用户更改/修改容器。

如果您想测试DCP(Docker数据中心)的UCP,则需要拥有一个月的试用许可证,该许可证将帮助您根据要求详细说明。

希望这会有所帮助!

谢谢!


1
作为有关docker组的解决方案,如果您仅管理docker主机系统,则此方法有效,OP听起来更像是分发映像...
Tensibai

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.