【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本
docker容器内获取宿主机的信息和执行宿主机的脚本
·
思路
我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作。
使用 sshpass (我的是CentOS 7.9环境)
1.安装sshpass
apt-get update //更新一下
apt-get -y install sshpass //安装
2.连接宿主机执行命令
sshpass -p '宿主机用户密码' ssh -o StrictHostKeyChecking=no -p 22 用户名@宿主机ip 命令
列如:
注意:这是在容器中运行的,查出了宿主机的ip配置信息。
sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 ifconfig
3.连接执行宿主机的脚本
vim hello.sh //在宿主机建一个脚本文件
脚本内容
#!/bin/bash
echo "hello woshikunkun"
注意:这是在容器中运行的,执行了宿主机的脚本。
sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 sh hello.sh
4.当然也可以自动化,比如:java项目部署在docker容器内,然后java项目在某一时刻执行宿主机的脚本或者宿主机的命令
注意: 要先安装 sshpass命令才行。 Dockerfile文件可以在你部署容器的时候自动安装。
docker部署springboot项目
Runtime rt = Runtime.getRuntime();
//执行 ifconfig -a 命令,查询宿主机的ip配置
String[] shell = {"/bin/bash", "-c", "sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 ifconfig -a "};
//执行hello.sh 脚本
String[] shell = {"/bin/bash", "-c", "sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 sh hello.sh "};
Process exec = Runtime.getRuntime().exec(shell);
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String str = null;
String[] strArray = null;
//逐一对每行内容进行操作
while ((str = in.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
System.out.println(e);
} finally {
in.close();
}
更多推荐
已为社区贡献1条内容
所有评论(0)