我尝试使用python Popen使用命令行实现这样的效果。
echo "hello" | docker exec -i $3 sh -c 'cat >/text.txt'
目标是管道"你好"将文本写入docker exec
命令并将其写入docker容器。
我已经尝试了这一点,但似乎无法让它发挥作用。
import subprocess
from subprocess import Popen, PIPE, STDOUT
p = Popen(('docker', 'exec', '-i', 'nginx-ssl', 'sh', '-c', 'cat >/text.txt'), stdin=subprocess.PIPE)
p.stdin.write('Hello')
p.stdin.close()
答案 0 :(得分:1)
您还需要给stdin
新行:
p.stdin.write('Hello\n')
即使sys.stdout
也是如此。您不需要为print
添加新行,因为它会为您执行此操作,但是您手动执行的任何文件写入都需要包含它。不过,您应该使用p.communicate('Hello')
。这是为此而做的。