docker 實現容器與宿主機無縫調用shell命令

如下所示:

nsenter -t 1 -m -u -n -i sh -c "echo hello world! "

docker容器加上privilege權限, 設置pid: “host”

補充:在宿主機執行docker容器中的shell腳本或命令

常見命令形式:

docker exec -it master /bin/bash -c 'echo $PATH'
docker exec -it master /bin/bash -c 'cd /home/bigdata/shell && ./test.sh'

如果shell腳本中涉及到環境變量,或者提示JAVA_HOME is not set,可以在腳本中加上以下命令

export JAVA_HOME=jdk路徑

補充:在docker宿主機上運行docker中container中的執行的命令

腳本如下:

docker exec -u root xxx(container名稱) bash -c '命令1 && 命令2'

實際例子如下:

docker exec -u root mycentos bash -c 'mkdir /home/test.txt && chmod 777 /home/test.txt && runuser - oracle -c "rm -rf /home/test.txt"'

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。