docker python如何回声到fi中

2024-04-19 02:20:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python3和dockerpy来运行dockers和执行一些操作。你知道吗

我正在创建一个容器,并希望向挂载目录中的一个文件回显一些内容,但是它没有输出到文件中,而是输出到stdout中。你知道吗

这是密码

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')

我错过了什么?如何使用命令输出到文件中?你知道吗


Tags: 文件docker目录txtclienttrueoutputdata
1条回答
网友
1楼 · 发布于 2024-04-19 02:20:11

我假设这是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()

相关问题 更多 >