当前位置:   article > 正文

【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本_docker 如何执行宿主 命令bash

docker 如何执行宿主 命令bash

思路

我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作。

使用 sshpass (我的是CentOS 7.9环境)

1.安装sshpass

apt-get update //更新一下
apt-get -y install sshpass //安装 
  • 1
  • 2

2.连接宿主机执行命令

 sshpass -p '宿主机用户密码' ssh -o StrictHostKeyChecking=no -p 22 用户名@宿主机ip 命令
  • 1
 列如:
  注意:这是在容器中运行的,查出了宿主机的ip配置信息。
  sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 ifconfig 
  
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

3.连接执行宿主机的脚本

vim hello.sh //在宿主机建一个脚本文件

脚本内容
#!/bin/bash
echo "hello woshikunkun"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
 注意:这是在容器中运行的,执行了宿主机的脚本。
  sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 sh hello.sh
  • 1
  • 2

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/632167
推荐阅读
相关标签
  

闽ICP备14008679号