docker python 如何回显到文件中
docker python how to echo into a file
我正在使用 python3 和 docker-py 以便 运行 dockers 并执行一些操作。
我正在创建一个容器,并想将某些内容回显到挂载目录中的文件中,但它不是输出到文件中,而是输出到标准输出中。
这是代码
import docker
client = docker.from_env()
cont = client.containers.create("continuumio/anaconda3", volumes={
"/home/user/zbp/rundir": {"bind": "/data", "mode": "rw"}
}, command="sleep 1000")
cont.start()
log = cont.exec_run(["echo", "1", ">>", "/data/sada.txt"],
stderr=True, stdout=True)
and the output is
ExecResult(exit_code=0, output=b'1 >> /data/sada.txt\n')
我在这里错过了什么?如何使用命令输出到文件中?
我想这是 docker exec
的预期行为,您可能需要打开一个 shell 并包装您的命令,以便您可以将输出重定向到一个文件
log = cont.exec_run(["sh -c ", "echo 1 >> /data/sada.txt",],
stderr=True, stdout=True)
我还没有测试过这段代码,请根据您的需要修改上面的代码片段
添加运行良好的测试代码,仅供参考,我使用了 ubuntu 图片
import docker
client = docker.from_env()
cont = client.containers.create("ubuntu", volumes={
"/tmp/dockerdata": {"bind": "/data", "mode": "rw"}
}, command="sleep 100000")
cont.start()
log = cont.exec_run("sh -c 'ls -l >> /data/out.txt'",
stderr=True, stdout=True)
for line in log:
print(line, end='')
cont.stop()
print(cont.status)
cont.remove()
我正在使用 python3 和 docker-py 以便 运行 dockers 并执行一些操作。
我正在创建一个容器,并想将某些内容回显到挂载目录中的文件中,但它不是输出到文件中,而是输出到标准输出中。
这是代码
import docker
client = docker.from_env()
cont = client.containers.create("continuumio/anaconda3", volumes={
"/home/user/zbp/rundir": {"bind": "/data", "mode": "rw"}
}, command="sleep 1000")
cont.start()
log = cont.exec_run(["echo", "1", ">>", "/data/sada.txt"],
stderr=True, stdout=True)
and the output is
ExecResult(exit_code=0, output=b'1 >> /data/sada.txt\n')
我在这里错过了什么?如何使用命令输出到文件中?
我想这是 docker exec
的预期行为,您可能需要打开一个 shell 并包装您的命令,以便您可以将输出重定向到一个文件
log = cont.exec_run(["sh -c ", "echo 1 >> /data/sada.txt",],
stderr=True, stdout=True)
我还没有测试过这段代码,请根据您的需要修改上面的代码片段
添加运行良好的测试代码,仅供参考,我使用了 ubuntu 图片
import docker
client = docker.from_env()
cont = client.containers.create("ubuntu", volumes={
"/tmp/dockerdata": {"bind": "/data", "mode": "rw"}
}, command="sleep 100000")
cont.start()
log = cont.exec_run("sh -c 'ls -l >> /data/out.txt'",
stderr=True, stdout=True)
for line in log:
print(line, end='')
cont.stop()
print(cont.status)
cont.remove()