Docker容器获取宿主机信息
最近在做产品授权的东西,开始宿主机为Window,程序获取机器硬件信息相对简单些,后来部署时发现各种各样的的环境问题,所有后来改用dokcer部署,docker方式获取宿主机信息时花了些时间,特此记录一下
docker 获取宿主机的信息
// dmidecode -t 4 | grep ID | tail -1 // CPUID // 系统 // dmidecode -s system-serial-number // 查看系统序列号 // dmidecode -s system-uuid // 查看系统UUID // dmidecode -s system-product-name //查看服务器系统型号 // dmidecode -s processor-manufacturer | tail -1 // 处理器厂家 // 主板 // dmidecode -s baseboard-product-name // 主板型号 // dmidecode -s baseboard-serial-number // 主板序列号 // dmidecode -s baseboard-manufacturer // 主板厂家
实际项目当中,我获取了CPUID、系统序列号、系统UUID、系统型号、处理器厂家,之所有获取这么多信息标识机器,是考虑到有些信息在某些系统可能为空,而且CPUID也不唯一了,所以就多获取些。
调查下来,docker 获取宿主机信息大体可以通过三种方式
- 通过环境变量由外部传入容器内
使用挂载宿主机目录方式
- 在容器中使用ssh连接到主机
一:通过环境变量由外部传入容器内
大体思路是docker 支持通过-e来传递参数到容器内部程序,就像安装docker-mysql那样密码可以通过参数传递一样
- 在DockeFile中增加环境变量配置节点 (此步骤主要用来设置参数默认,也可以省略,通过其它方式设置)
- 在程序启动时应用获取程序变量并应用
- 在docker run 时通过-e参数传递到容器中
二:使用挂载宿主机目录方式
确保宿主机能执行dmidecode命令(必须)
将宿主机的如下两个目录挂载到容器中
// dmidecode程序的目录,如果不挂载那么容器中识别不了dmidecode命令 /usr/sbin/dmidecode或者/sbin/dmidecode // dmidecode调用时会使用到mem这个文件,如果不挂载会找不到文件 /dev/mem
在容器启动时增加 --privileged = true参数,让容器获得近似于宿主机root的权限
三:在容器中使用ssh连接到主机
思路:在docker容器内安装ssh,sshpass服务,通过ssh连接到宿主机执行命令,获 取宿主机信息(必须知道宿主机Ip和密码)
步骤:
- 安装服务 yum -y install openssh-server
- 修改配置 vim /etc/ssh/sshd_config PermitRootLogin的值修改为yes保存退出
- 启动ssh服务 systemctl start sshd.service
- 设置开机启动 systemctl enable sshd.service
- 安装sshpass yum -y install sshpass
参考信息 :https://blog.csdn.net/qq_42910468/article/details/121387411
https://blog.csdn.net/weixin_42173451/article/details/123085460
Docker容器获取宿主机信息的更多相关文章
- 如何让Docker容器随宿主机的启动而自动启动
使用Docker容器部署服务时,不仅需要让服务随Docker容器的启动而启动,还需要让Docker容器随宿主机的启动而自动启动,为此Docker提供了Docker run的restart参数 #doc ...
- docker容器和宿主机之间复制文件
https://blog.csdn.net/u012416928/article/details/55049063 https://blog.csdn.net/u011596455/article/d ...
- docker容器共享宿主机环境,从而为镜像体积减负
一.背景介绍 响应公司技术发展路线,开发的服务均需要将打成docker镜像,使用docker进行统一管理.可是随着服务越来越多,镜像也越来越多.每次制作镜像的时候都需要将依赖打进容器,这样一个jre的 ...
- docker容器与宿主机的数据交互
在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 方式一.Docker cp命令 docker cp :用于容器与主机之间 ...
- Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
docker 容器网络默认使用 bridge 桥接模式,正常情况下,容器会使用 daemon.json 中定义的虚拟网桥来与宿主机进行通讯. 最近更新 Docker for mac 之后,发现以前容器 ...
- 【docker】docker容器和宿主机之间文件互传,互相拷贝
原文地址:https://www.cnblogs.com/areyouready/p/8973495.html [注意:命令中符号均为英文符号] 1.从容器里面拷文件到宿主机 答:在宿主机里面执行以下 ...
- 记一次自启动的docker容器将宿主机的开机用户登录界面覆盖事件
宿主机的系统为CentOS7_7.7.1908,默认为GUI启动,安装了宝塔面板,docker-ce为最新版. 在启动了一个centos7的容器(镜像为centos官方镜像)后,将该容器重启策略设置为 ...
- Docker容器和宿主机互传文件
1.docker容器向宿主机传送文件 格式: docker cp container_id:<docker容器内的路径> <本地保存文件的路径> 例: docker cp 10 ...
- docker容器与宿主机之间内容拷贝
来自:http://blog.csdn.net/yangzhenping/article/details/43667785 常用的方式有3种: 从容器内拷贝文件到主机上 docker cp <c ...
随机推荐
- win10搜索功能用不了
这玩意搞了我今天,直接裂开!系统更新根本解决不了 好在查了相关资料才知道,原来微软在 Win10 的更新中,将搜索功能和语音助手 Cortana 进行了拆分,搜索成了一个独立的功能,还好有外媒发现问题 ...
- 对象数组的foreach循环操作和集合容器
ForEach标签可以循环数组,list,map集合 采用 foreach循环遍历 ,并每次循环允许执行一次回调函数 for (容器中元素类型 临时变量: 容器变量) { System.out.pri ...
- php和js的不定参
function my_func() { $args = func_get_args(); print_r($args); } my_func('php','java','node.js'); jav ...
- AI+医疗:使用神经网络进行医学影像识别分析 ⛵
作者:韩信子@ShowMeAI 计算机视觉实战系列:https://www.showmeai.tech/tutorials/46 行业名企应用系列:https://www.showmeai.tech/ ...
- Luogu2455 [SDOI2006]线性方程组 (高斯消元)
模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...
- Docker 12 数据卷
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- Linux —用户和组
Linux 用户和组 1.用户和组的概念 用户的作用: Authentication:认证 Authorization:授权 Accouting:审计 用户存在的最终目的: 为了实现资源的分派 组的作 ...
- HCIA-Datacom 3.2 实验二:生成树基础实验
实验介绍 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路.但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信 ...
- 制作离线yum源
互联网上操作 1.安装所需依赖环境和软件包 1.1安装命令 yum install yum-utils createrepo 1.2各软件包功能 createrepo :生成yum 源各软件之间的依赖 ...
- 小k工具箱
个人开发软件 大小:21mb左右 基于JavaScript开发 支持系统:安卓/iOS/鸿蒙 未来可期上架各大应用市场 预览图 永久更新维护地址 官方讲解