思路
我們可以通過(guò)在容器內(nèi)遠(yuǎn)程連接宿主機(jī),然后對(duì)宿主機(jī)進(jìn)行操作。
使用 sshpass (我的是CentOS 7.9環(huán)境)
1.安裝sshpass
apt-get update //更新一下
apt-get -y install sshpass //安裝
2.連接宿主機(jī)執(zhí)行命令
sshpass -p '宿主機(jī)用戶密碼' ssh -o StrictHostKeyChecking=no -p 22 用戶名@宿主機(jī)ip 命令
列如:
注意:這是在容器中運(yùn)行的,查出了宿主機(jī)的ip配置信息。
sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 ifconfig
3.連接執(zhí)行宿主機(jī)的腳本
vim hello.sh //在宿主機(jī)建一個(gè)腳本文件
腳本內(nèi)容
#!/bin/bash
echo "hello woshikunkun"
注意:這是在容器中運(yùn)行的,執(zhí)行了宿主機(jī)的腳本。
sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 sh hello.sh
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-507496.html
4.當(dāng)然也可以自動(dòng)化,比如:java項(xiàng)目部署在docker容器內(nèi),然后java項(xiàng)目在某一時(shí)刻執(zhí)行宿主機(jī)的腳本或者宿主機(jī)的命令
注意: 要先安裝 sshpass命令才行。 Dockerfile文件可以在你部署容器的時(shí)候自動(dòng)安裝。
docker部署springboot項(xiàng)目文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-507496.html
Runtime rt = Runtime.getRuntime();
//執(zhí)行 ifconfig -a 命令,查詢宿主機(jī)的ip配置
String[] shell = {"/bin/bash", "-c", "sshpass -p 'abc@1234' ssh -o StrictHostKeyChecking=no -p 22 tmsceshi@10.73.100.6 ifconfig -a "};
//執(zhí)行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;
//逐一對(duì)每行內(nèi)容進(jìn)行操作
while ((str = in.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
System.out.println(e);
} finally {
in.close();
}
到了這里,關(guān)于【Docker】docker容器內(nèi)獲取宿主機(jī)的信息和執(zhí)行宿主機(jī)的腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!