docker-machine中awk的意外行为

受这篇文章的启发,我试图在我的Mac上使用docker-machine来停止正在运行的容器。 但是,在docker-machine sshawk运行方式与直接在容器中运行相比,似乎有所不同。

当我直接向容器ssh'd,一切都按预期工作:

 me@myMac:~$ docker-machine ssh default docker@default:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 028fd7148881 myrepo/mycontainer "apachectl -DFOREGROU" 14 minutes ago Up 14 minutes 0.0.0.0:80->80/tcp gloomy_mayer docker@default:~$ docker ps | awk 'NR > 1 {print $1}' 028fd7148881 docker@default:~$ docker ps | awk 'NR > 1 {print $1}' | xargs --no-run-if-empty docker kill 028fd7148881 docker@default:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 

但是当远程运行时, awk行为有所不同:

 me@myMac:~$ docker-machine ssh default "docker ps" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7927b10b8a28 myrepo/mycontainer "apachectl -DFOREGROU" 11 seconds ago Up 10 seconds 80/tcp happy_wozniak me@myMac:~$ docker-machine ssh default "docker ps | awk 'NR > 1 {print $1}'" 7927b10b8a28 myrepo/mycontainer "apachectl -DFOREGROU" About a minute ago Up About a minute 80/tcp happy_wozniak me@myMac:~$ docker-machine ssh default "docker ps | awk 'NR > 1 {print $1}' | xargs --no-run-if-empty docker kill" 7927b10b8a28 Failed to kill container (myrepo/mycontainer): Error response from daemon: Cannot kill container myrepo/mycontainer: No such container: myRepo/myContainer Failed to kill container (apachectl -DFOREGROU): Error response from daemon: Cannot kill container apachectl -DFOREGROU: No such container: apachectl -DFOREGROU Failed to kill container (3): Error response from daemon: Cannot kill container 3: No such container: 3 ... 

为什么awkdocker-machine下的行为有所不同?

 "docker ps | awk 'NR > 1 {print \$1}' | xargs --no-run-if-empty docker kill" $ ==> \$ 

docker工人ps -q