问题描述
我正在尝试使用 docker-py 创建运行容器化应用程序,我需要将输入数据写入其 STDIN,并从其 STDOUT 中读取。基本上是这种工作流程
echo "hello" | docker run -i --rm busyBox sh -c "cat -"
但是在 Python 中。简而言之,我已经尝试了为 STDIN 部分描述的 here 和为 STDOUT 部分描述的 attached another socket 方法。但它并没有像我希望的那样工作......这是一个最小的例子:
docker_test.py
#!/usr/bin/env python
import docker
client = docker.DockerClient()
container = client.containers.run(
auto_remove=True,command="cat -",detach=True,image="busyBox",stdin_open=True,)
# Writing to stdin
input_socket = container.attach_socket(
params={
"stdin":True,"stream":True,},)
with open("test.txt") as file:
input_socket._sock.send(file.readline().encode("utf-8"))
# Reading from stdout
output_socket = container.attach_socket(
params={
"stdout":True,"logs":True,)
for line in output_socket:
print(line.decode())
假人test.txt
1
2
3
4
和执行的结果:
$ ./docker_test.py
1
如你所见,它只输出测试文件的第一行,然后是一堆换行符,然后挂起。有时,它根本不输出任何内容,但无论哪种情况,它都不会退出。
我该如何正确执行此操作?任何帮助将不胜感激。
提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)