docker 怎么获取宿主主机硬件唯一标识?

2020-07-31 10:01:37 +08:00
 JRay

在网上就找到了一篇 https://blog.csdn.net/miapecloud/article/details/97106811

但是在机器在重启之后就变了,想问下还有其他方法可以实现这个吗?

目前想到可能实现的方案有在启动的时候先过去宿主机的唯一标识,然后再传递到 docker 里面使用。

还有更加优雅的方案吗?

4781 次点击
所在节点    Docker
10 条回复
rushssss
2020-07-31 10:13:36 +08:00
获取尽可能多的不变的参数然后做 hash 来识别,例如 CPU 数量,硬盘大小,内存容量,udid 等等各种信息,放在一起 hash 以后当作唯一标识
binux
2020-07-31 10:15:50 +08:00
说出你的真实需求
JRay
2020-07-31 10:23:51 +08:00
@rushssss 问题是怎么在 docker 容器里面获取宿主主机的
JRay
2020-07-31 10:24:31 +08:00
@binux 真实需求就是一个软件授权的功能,项目是 docker 部署,需要获取硬件唯一标识来生成授权码
caryqy
2020-07-31 10:37:30 +08:00
镜像对于客户而言是个黑盒,从制作镜像时加自己的东西入手呢
Jirajine
2020-07-31 10:53:14 +08:00
docker 的意义就是在不同的主机上提供统一的环境。
不妨改成环境变量传 key 然后联网鉴权。
JRay
2020-07-31 11:21:20 +08:00
@Jirajine
@caryqy

目前也就只想到这个方案了 用环境变量传进去
nozer
2020-07-31 17:44:25 +08:00
我最近遇到楼主一样的问题。

我的解决方案是,在物理机上运行一个授权服务,此服务用来提取计算机的硬件特征且负责校验授权码,容器内部的服务和外部的授权服务器通过网络互联。

运行在物理机上的服务要求同一时刻只能有一个客户端连接。

其他方案:包括挂载配置文件、传递参数、环境变量这些都是没有办法避免容器内部的授权检验被(毫不费吹灰之力)欺骗的。


另外:
这个运行在物理机上的授权服务还可以做反容器检测,让他只能在容器外部运行。
JRay
2020-07-31 17:54:44 +08:00
@nozer 你那种实现方式确实也可以,就是感觉又的新开一个服务 ,我想到一个能不能直接挂载 /sys/class/dmi/id/product_uuid 这个目录到容器,这样的话容器获取的应该就是宿主唯一的标识了。
boris93
2020-07-31 20:25:04 +08:00
@JRay #9 然后盗版玩家挂载一个别人分享出来的文件到容器里,你怎么知道?
其实就是 #8 那句话,骗你跟玩似的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX