公司项目License系统激活需要获取IP地址、LZ通过ssh服务连接宿主机执行shell脚本语言在docker容器中获取宿主机的MAC地址、磁盘序列号、CPU序列号与License绑定,达到定制化主机系统激活,中间如果报命令不存在的话,下载对应的命令即可,话不多说脚本写起
二、编写脚本
1、 获取宿主机的IP地址
注意:
LZ是在宿主机的环境编写脚本获取IP地址的,如果是docker环境内想获取宿主机的IP地址可以容器里面装ssh服务,通过ssh来执行宿主机脚本,或者在宿主机上写个http服务来执行脚本,容器通过暴露的端口来调用
①首先
ifconfig
命令看一下插网线的网卡:可以看到我的网线对应的网卡是em1,ip的内网段是1,且排在内网卡第一位(还有一个内网卡是em2),所以使用hostname -I命令获取IP地址时,再通过awk命令处理打印
$1
就好
②vim编辑一个脚本文件,脚本内容如下:。然后使用sh getIp.sh 命令或者直接./getIp.sh 跑一下脚本查看运行结果
hostname -I|awk '{print $1}'
2、 获取宿主机的MAC地址
vim编辑一个脚本macAddress.sh脚本文件,脚本内容如下:
ifconfig docker0 | grep "ether" | awk '{print $2}'
3、获取宿主机的CPU序列号(使用dmidecode命令,在docker容器中或者宿主机内都可获取到)
vim编辑一个脚本cpuAddress.sh脚本文件,脚本内容如下:
dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'
4、获取宿主机的磁盘序列号 (使用fdisk命令,在docker容器中或者宿主机内都可获取到)
vim编辑一个脚本identifier.sh脚本文件,脚本内容如下:
fdisk -l |grep "Disk identifier" |awk {'print $3'}
结束语:坚定的意志,温柔的心
我们使用
docker
run创建
容器
时,可以使用–net选项指定
容器
的网络模式,
docker
一共有4中网络模式:
1:bridge模式,–net=bridge(默认)。
这是dokcer网络的默认设置。安装完
docker
,
系统
会自动添加一个供
docker
使用的网桥
docker
0,我们创建一个新的
容器
时,
容器
通过DHCP
获取
一个与
docker
0同网段的
IP地址
。并默认连接到
docker
0网桥,以此实现
容器
与
宿主机
的网络互通。如下:
2:host模式,–net=host。
这个模式下创建出来的
容器
,将不拥有自己独立的Network Namespace,即
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 链接
宿主机
,172.17.0.1为
docker
虚拟网桥地址,默认为172.17.0.1,可更改
dmidecode 是一个在
Linux
系统
下
获取
硬件信息的工具。它允许用户查看计算机硬件的详细信息,包括制造商、产品名称、
序列号
等。这个命令能够解析和显示计算机的 DMI (Desktop Management Interface) 数据。
dmidecode -t或者 --type
这个选项后面跟着一个关键词或者...
Question
Docker
内需要访问本机的数据库,如何访问。使用127.0.0.1肯定是不行的,因为这个在
Docker
容器
里面指的是
容器
本身。所以,需要走别动渠道进行解决。
Solution
下面几种办法,根据操作
系统
的类型,选取其一即可。
Docker
File:
RUN /sbin/ip route|awk '/default/ { print $3,\t
docker
host }' >> /etc/hosts
RunTime:
(may not use)
docker
run --add-host
docker
host:`/sbin/ip route|awk '/def
root@676a5a655357:/# ping host.
docker
.internal
PING host.
docker
.internal (192.168.65.2) 56(84) bytes of data.
64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=0.833 ms
64 bytes from 192.168.65.2 (192.168
# 场景描述
在
centos
7 运行
docker
容器
应用时,需要连接
宿主机
的 mysql 的 3306 端口,发现连接不上,
docker
容器
无法访问
宿主机
的 mysql 数据库。但是,在
容器
内访问外部网络是可以 ping 通的。
# 原因分析
在
centos
7 上部署
docker
容器
,其网络模式采用的是 bridge 模式。
启动
docker
时,
docker
进程会创建一个名为 ...
一部分服务打包进
docker
用
docker
-compose启动,但是一部分正在开发中,放在host比较方便,比如node.js这种,希望在调试已经封进
docker
容器
的时候,能设置从
容器
网络访问
宿主机
node服务
参考https://www.jb51.net/article/149173.htm
docker
安装的时候,会在
宿主机
建立一块虚拟网卡
docker
0,
宿主机
通过...
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"],
"dns": ["100.xxx.1.20", "100.xx.1xx.250"],
"data-root": "/mnt/var/lib/docker"
这里面的 dns 属性值是配置什么的ip地址?
Java中的Mysql数据库备份与定时任务快速实现(详细代码示例)
weixin_42509093:
深入解析MybatisPlus多表连接查询实践
热心码民阿振: