如何发送到docker-py容器的stdin?

时间:2014-11-10 12:15:51

标签: docker dockerpy

考虑这个shell示例:

echo "hello" | docker run --rm -ti  -a stdin busybox \
    /bin/sh -c "cat - >/out"

这将执行一个busybox容器,并使用内容/out创建一个新文件 hello

如何使用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'

1 个答案:

答案 0 :(得分:0)

这是更新的解决方案:

#!/usr/bin/env python
import docker

# connect to docker
client = docker.APIClient()

# create a container
container = docker_client.create_container(
  'busybox',
  stdin_open = True,
  command    = 'sh -c "cat - >/out"')
client.start(container)

# attach to the container stdin socket
s = client.attach_socket(container, params={'stdin': 1, 'stream': 1})

# send text
s.send('hello')

# close, stop and disconnect
s.close()
client.stop(container)
client.wait(container)
client.remove_container(container)