0条评论
还没有人评论过~
执行下面的 shell 脚本
sudo ssh -t ${node//[[:space:]]/} docker exec -t $(docker ps -f name=ucenter_api -q) curl localhost/alive
会报错
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Error: No such container: curl
而 ssh
sudo ssh -t ${node//[[:space:]]/}
然后
docker exec -t $(docker ps -f name=ucenter_api -q) curl localhost/alive
可以正常执行,请问如何解决?
解决了,1)要将 ssh 执行的脚本放在双引号中;2)要对 $ 进行转义。
sudo ssh ${node//[[:space:]]/} "docker exec -t \$(docker ps -f name=ucenter_api -q) curl localhost/alive"
也可以使用 xargs
sudo ssh ${node//[[:space:]]/} "docker ps -f name=ucenter_api -q | xargs -I {} docker exec -t {} curl localhost/alive"
第一个只执行了ssh命令, docker命令是在$()命令替换里头执行的, 写在命令行的docker当做参数传给ssh了, 在docker前面加上;