Docker-如何通过API向程序发送输入

Docker-如何通过API向程序发送输入,docker,Docker,我一直在使用Docker的远程API创建一个容器,在其中运行一个Python程序,连接到容器,并将写入stdout的输出流到web 现在,我想让我的Python程序接受来自stdin的用户输入。例如 import sys name = sys.stdin.readline() print "Your name is: " + name 如何通过API将用户输入传递给在Docker容器中运行的Python程序?我没有看到任何API端点允许我将“输入”传递到docker容器中运行的进程 谢谢。不要

我一直在使用Docker的远程API创建一个容器,在其中运行一个Python程序,连接到容器,并将写入stdout的输出流到web

现在,我想让我的Python程序接受来自stdin的用户输入。例如

import sys
name = sys.stdin.readline()
print "Your name is: " + name
如何通过API将用户输入传递给在Docker容器中运行的Python程序?我没有看到任何API端点允许我将“输入”传递到docker容器中运行的进程


谢谢。

不要认为docker支持这种互动。不过,有两种解决方案

  • 您可以在bash上启动容器,并从容器内部运行命令

  • 或者,您可以将python程序转换为等待参数的守护进程服务。用于将python作为进程启动。注意这个问题


  • 希望这有帮助。

    也许只是在容器内运行一个sshd服务器

    实际上,您可以使用
    docker attach
    附加容器的stdin。例如:

    启动“侦听”容器:

    docker run -i -t ubuntu:precise /bin/bash -c 'read FOO; echo $FOO;'
    
    然后在另一个终端:

    # lookup container id
    docker ps
    
    # attach the container
    docker attach 91495c6374b1
    
    现在,您已连接到侦听容器的stdin,可以键入thing,一切都应该正常


    至于使用远程API来实现这一点。。。我认为这可以使用
    /containers/{id}/attach
    端点和
    stdin=1
    以及可能的
    stream=1
    。无法使其正常工作,并且仍在努力理解其背后的go代码,但从我在本文中看到的情况来看,这肯定是可能的。

    这个问题有点老了,但我认为您正在寻找的是来自远程API的附加入口点。 请点击此处:

    它会打开一个套接字流,您需要与docker进行对话。您还可以将websocket与以下选项一起使用:

    我发现了这个IRC聊天,详细解释了如何继续:


    希望对您有所帮助

    谢谢,我确实注意到了端点中的
    stdin
    选项。但是,我想知道,当HTTP是单向流时,我如何才能提供输入。@jeffreyveon-如果你还好奇的话,他们(目前)正在劫持TCP连接。e、 HTTP是一种方式,但它基于开放的TCP套接字。他们基本上对HTTP协议进行了少量扩展,以允许通过TCP套接字进行双向通信