如何发送到docker-py容器的stdin?
考虑这个shell例子:
echo "hello" | docker run --rm -ti -a stdin busybox \ /bin/sh -c "cat - >/out"
这将执行一个busybox容器,并用内容hello
创build一个新的文件/out
。
我将如何使用docker-py完成这个任务?
docker-py
等价物:
container = docker_client.create_container( 'busybox', stdin_open = True, command = 'sh -c "cat - >/out"' ) docker_client.start( container )
有stdin_open = True
,但是我在哪里写'hello'
?
回答我自己的问题:它现在还没有实现。 这包括docker-py至less1.4版本的所有版本。
您需要在运行时将容器附加到容器,以stream式传输STDOUT / STDERR。 就是这样:
container = docker_client.create_container('busybox', stdin_open = True, command = 'sh -c "cat - >/) docker_client.start(container) out_stream = docker_client.attach(container=container, stdout=True, stderr=True, stream=True)
如果stream=True
,则out_stream
是一个generator
,因此您可以迭代它并实时获取日志。
更多详情: http : //docker-py.readthedocs.org/zh/latest/api/