[英]How can I run interactive docker shell from python script
我構建了有助於在docker swarm中進入容器的腳本:
import docker
d = docker.from_env()
s = d.services.get(args.service_name)
task = s.tasks(filters={"desired-state": "running"})
node = d.nodes.get(task[0]['NodeId'])
container_id = task[0]['Status']['ContainerStatus']['ContainerID']
print("env DOCKER_HOST=tcp://{addr}:2376 docker exec -ti {container} bash".format(addr=node.attrs['Status']['Addr'], container=container_id))
現在,我想從腳本本身運行交互式外殼程序,但這不起作用:
c_client = docker.DockerClient(base_url="tcp://{}:2376".format(node.attrs['Status']['Addr']))
c = c_client.containers.get(container_id)
c.exec_run("bash", stdin=True, tty=True)
那么,有什么方法可以僅使用python和python-docker運行交互式shell?
似乎有可能,但是可能很麻煩。
看起來您首先需要使用socket=True
。 完成此操作后,您需要將Python進程的stdin
和stdout
連接到套接字,並根據需要進行讀寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.