从远程机器在 docker 容器上执行命令
Execute command on docker container from remote machine
我在主机上有 docker 运行。此主机上有两个 docker 容器,即 container_1 和 container_2。现在我想从我的远程开发机器在 container_1 上执行一些命令。
管道分隔命令即
sudo docker exec -it container_1 sudo find <dir> - type f -iname *_abc_* -print0 | du --files0-from - -b | awk 'BEGIN{sum=0} {sum+=} END{print sum}'
上面的命令仅形成第一个命令,直到第一个管道在 docker 容器上执行,下一组命令在主机上执行。
我正在使用 python fabric api 从远程计算机执行此操作。
有什么方法可以从远程机器在容器上执行这个完整的命令吗?
那是因为管道命令实际上是在您的主机上执行的,试试这个,它可能对您有用:
sudo docker exec -it container_1 bash -c "sudo find - type f -iname_abc_ -print0 | du --files0-from - -b | awk 'BEGIN{sum=0} {sum+=} END{print sum}'"
我在主机上有 docker 运行。此主机上有两个 docker 容器,即 container_1 和 container_2。现在我想从我的远程开发机器在 container_1 上执行一些命令。
管道分隔命令即
sudo docker exec -it container_1 sudo find <dir> - type f -iname *_abc_* -print0 | du --files0-from - -b | awk 'BEGIN{sum=0} {sum+=} END{print sum}'
上面的命令仅形成第一个命令,直到第一个管道在 docker 容器上执行,下一组命令在主机上执行。
我正在使用 python fabric api 从远程计算机执行此操作。
有什么方法可以从远程机器在容器上执行这个完整的命令吗?
那是因为管道命令实际上是在您的主机上执行的,试试这个,它可能对您有用:
sudo docker exec -it container_1 bash -c "sudo find - type f -iname_abc_ -print0 | du --files0-from - -b | awk 'BEGIN{sum=0} {sum+=} END{print sum}'"